summaryrefslogtreecommitdiff
path: root/components/lwp/arch/aarch64/common/vdso_data.c
blob: 13c055ec56df3bde932aae2f2436319046fd43ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 * Copyright (c) 2006-2024 RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author         Notes
 * 2024-07-04     rcitach        init ver.
 */

#include <rtthread.h>
#include <gtimer.h>
#include <ktime.h>
#include <time.h>
#include <vdso_datapage.h>
#include <vdso_data.h>

void rt_vdso_update_glob_time(void)
{
    struct vdso_data *vdata = get_k_vdso_data();
    struct timespec *vdso_ts;
    uint64_t initdata = vdata->realtime_initdata;
    rt_vdso_write_begin(vdata);

    vdso_ts = &vdata[CS_HRES_COARSE].basetime[CLOCK_REALTIME];
    rt_ktime_boottime_get_ns(vdso_ts);
    vdso_ts->tv_sec = initdata + vdso_ts->tv_sec;

    vdso_ts = &vdata[CS_HRES_COARSE].basetime[CLOCK_MONOTONIC];
    rt_ktime_boottime_get_ns(vdso_ts);

    vdata->cycle_last = rt_hw_get_cntpct_val();
    rt_vdso_write_end(vdata);
}