add time32 ABI compat shims, compat source tree
[oweals/musl.git] / compat / time32 / clock_adjtime32.c
1 #include "time32.h"
2 #include <time.h>
3 #include <sys/time.h>
4 #include <sys/timex.h>
5 #include <string.h>
6 #include <stddef.h>
7
8 struct timex32 {
9         unsigned modes;
10         long offset, freq, maxerror, esterror;
11         int status;
12         long constant, precision, tolerance;
13         struct timeval32 time;
14         long tick, ppsfreq, jitter;
15         int shift;
16         long stabil, jitcnt, calcnt, errcnt, stbcnt;
17         int tai;
18         int __padding[11];
19 };
20
21 int __clock_adjtime32(clockid_t clock_id, struct timex32 *tx32)
22 {
23         struct timex utx = {
24                 .modes = tx32->modes,
25                 .offset = tx32->offset,
26                 .freq = tx32->freq,
27                 .maxerror = tx32->maxerror,
28                 .esterror = tx32->esterror,
29                 .status = tx32->status,
30                 .constant = tx32->constant,
31                 .precision = tx32->precision,
32                 .tolerance = tx32->tolerance,
33                 .time.tv_sec = tx32->time.tv_sec,
34                 .time.tv_usec = tx32->time.tv_usec,
35                 .tick = tx32->tick,
36                 .ppsfreq = tx32->ppsfreq,
37                 .jitter = tx32->jitter,
38                 .shift = tx32->shift,
39                 .stabil = tx32->stabil,
40                 .jitcnt = tx32->jitcnt,
41                 .calcnt = tx32->calcnt,
42                 .errcnt = tx32->errcnt,
43                 .stbcnt = tx32->stbcnt,
44                 .tai = tx32->tai,
45         };
46         int r = clock_adjtime(clock_id, &utx);
47         if (r<0) return r;
48         tx32->modes = utx.modes;
49         tx32->offset = utx.offset;
50         tx32->freq = utx.freq;
51         tx32->maxerror = utx.maxerror;
52         tx32->esterror = utx.esterror;
53         tx32->status = utx.status;
54         tx32->constant = utx.constant;
55         tx32->precision = utx.precision;
56         tx32->tolerance = utx.tolerance;
57         tx32->time.tv_sec = utx.time.tv_sec;
58         tx32->time.tv_usec = utx.time.tv_usec;
59         tx32->tick = utx.tick;
60         tx32->ppsfreq = utx.ppsfreq;
61         tx32->jitter = utx.jitter;
62         tx32->shift = utx.shift;
63         tx32->stabil = utx.stabil;
64         tx32->jitcnt = utx.jitcnt;
65         tx32->calcnt = utx.calcnt;
66         tx32->errcnt = utx.errcnt;
67         tx32->stbcnt = utx.stbcnt;
68         tx32->tai = utx.tai;
69         return r;
70 }