176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman/* 276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl> 376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl> 476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com> 576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * All rights reserved. 676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * 776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * Redistribution and use in source and binary forms, with or without 876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * modification, are permitted provided that the following conditions 976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * are met: 1076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * 1. Redistributions of source code must retain the above copyright 1176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * notice, this list of conditions and the following disclaimer. 1276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * 2. Redistributions in binary form must reproduce the above copyright 1376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * notice, this list of conditions and the following disclaimer in the 1476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * documentation and/or other materials provided with the distribution. 1576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * 3. The name of the author may not be used to endorse or promote products 1676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * derived from this software without specific prior written permission. 1776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * 1876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman */ 2976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 3076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#include "defs.h" 31f1639d8f51cd609a43f5091f4cc3b31be4c63ec4Mike Frysinger#include <fcntl.h> 320e946ab2c26f3cb6f27cb99ddf0f5581bef16781Dmitry V. Levin#include <signal.h> 33d856b99aff36012d1c8bc72012d0ede414e17971Wichert Akkerman#include <sys/timex.h> 346afc5659acc3df3d2e446ba4aa3a76bdd7264e1bRoland McGrath 35f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levinstatic void 36f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levinprint_timezone(struct tcb *tcp, const long addr) 37f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin{ 38f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin struct timezone tz; 39f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin 40f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin if (umove_or_printaddr(tcp, addr, &tz)) 41f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin return; 42f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin 43f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin tprintf("{tz_minuteswest=%d, tz_dsttime=%d}", 44f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin tz.tz_minuteswest, tz.tz_dsttime); 45f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin} 46f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin 47a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(gettimeofday) 4876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 4976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (exiting(tcp)) { 50f1e3a320458be22ef7e308f44d0a7b80887da36bDmitry V. Levin print_timeval(tcp, tcp->u_arg[0]); 5160fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 52f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin print_timezone(tcp, tcp->u_arg[1]); 5376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 5476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 5576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 5676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 57f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 58a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(osf_gettimeofday) 59f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 601d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko if (exiting(tcp)) { 61f1e3a320458be22ef7e308f44d0a7b80887da36bDmitry V. Levin print_timeval32(tcp, tcp->u_arg[0]); 6260fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 63f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin print_timezone(tcp, tcp->u_arg[1]); 641d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko } 651d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko return 0; 66f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 67f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 68f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 69a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(settimeofday) 7076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 71f1e3a320458be22ef7e308f44d0a7b80887da36bDmitry V. Levin print_timeval(tcp, tcp->u_arg[0]); 7276c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 73f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin print_timezone(tcp, tcp->u_arg[1]); 7476c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin 7576c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin return RVAL_DECODED; 7676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 7776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 78f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 79a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(osf_settimeofday) 80f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 81f1e3a320458be22ef7e308f44d0a7b80887da36bDmitry V. Levin print_timeval32(tcp, tcp->u_arg[0]); 8276c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 83f57edf4d37a4b2c8d0e9058e0a6ea940be49302eDmitry V. Levin print_timezone(tcp, tcp->u_arg[1]); 8476c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin 8576c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin return RVAL_DECODED; 86f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 87f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 88f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 89a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(nanosleep) 902e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin{ 912e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin if (entering(tcp)) { 922e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin print_timespec(tcp, tcp->u_arg[0]); 9360fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 942e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin } else { 959af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin 969af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin /* 979af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin * Second (returned) timespec is only significant if syscall 989af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin * was interrupted. On success and in case of other errors we 999af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin * print only its address, since kernel doesn't modify it, 1004793221a53fb69aa519bc91ab19a79524c0df097Denys Vlasenko * and printing the value may show uninitialized data. 10164acaa1193173c965ef32919aa5c092ce912d57cDenys Vlasenko */ 1029af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin if (is_erestart(tcp)) { 1039af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin temporarily_clear_syserror(tcp); 1042e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin print_timespec(tcp, tcp->u_arg[1]); 1059af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin restore_cleared_syserror(tcp); 1069af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin } else { 1079af94a2f486064a62cce5439fd417a992e591eaeDmitry V. Levin printaddr(tcp->u_arg[1]); 1084793221a53fb69aa519bc91ab19a79524c0df097Denys Vlasenko } 1092e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin } 1102e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin return 0; 1112e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin} 1122e55ff4562e87f8361f0c1db5a42ee6e9ac0cc56Dmitry V. Levin 1130ed617bd66624cec6138102545d73b2e2346f1f6Dmitry V. Levin#include "xlat/itimer_which.h" 11476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 115a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(getitimer) 11676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 11776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (entering(tcp)) { 118297b59401c998a2154b2fd1af7b234e2fa3a9305Dmitry V. Levin printxval(itimer_which, tcp->u_arg[0], "ITIMER_???"); 11960fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 12076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } else { 121322be803420d5ebc312cf26e1a2c2eb7ac21c0e0Dmitry V. Levin print_itimerval(tcp, tcp->u_arg[1]); 12276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 12376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 12476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 12576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 126f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 127a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(osf_getitimer) 128f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 1291d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko if (entering(tcp)) { 130297b59401c998a2154b2fd1af7b234e2fa3a9305Dmitry V. Levin printxval(itimer_which, tcp->u_arg[0], "ITIMER_???"); 13160fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 1321d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko } else { 133322be803420d5ebc312cf26e1a2c2eb7ac21c0e0Dmitry V. Levin print_itimerval32(tcp, tcp->u_arg[1]); 1341d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko } 1351d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko return 0; 136f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 137f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 138f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 139a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(setitimer) 14076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 14176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (entering(tcp)) { 142297b59401c998a2154b2fd1af7b234e2fa3a9305Dmitry V. Levin printxval(itimer_which, tcp->u_arg[0], "ITIMER_???"); 14360fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 144322be803420d5ebc312cf26e1a2c2eb7ac21c0e0Dmitry V. Levin print_itimerval(tcp, tcp->u_arg[1]); 14560fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 14676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } else { 147322be803420d5ebc312cf26e1a2c2eb7ac21c0e0Dmitry V. Levin print_itimerval(tcp, tcp->u_arg[2]); 14876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 14976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 15076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 15176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 152f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 153a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(osf_setitimer) 154f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 1551d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko if (entering(tcp)) { 156297b59401c998a2154b2fd1af7b234e2fa3a9305Dmitry V. Levin printxval(itimer_which, tcp->u_arg[0], "ITIMER_???"); 15760fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 158322be803420d5ebc312cf26e1a2c2eb7ac21c0e0Dmitry V. Levin print_itimerval32(tcp, tcp->u_arg[1]); 15960fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 1601d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko } else { 161322be803420d5ebc312cf26e1a2c2eb7ac21c0e0Dmitry V. Levin print_itimerval32(tcp, tcp->u_arg[2]); 1621d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko } 1631d632468c09756d3382d1a92f99a8413636e75d3Denys Vlasenko return 0; 164f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 165f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 166f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 1670ed617bd66624cec6138102545d73b2e2346f1f6Dmitry V. Levin#include "xlat/adjtimex_state.h" 1681a684d6ebee655035b06facee28c83f94c7dfbb9Dmitry V. Levin 16973215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levinstatic int 17073215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levindo_adjtimex(struct tcb *tcp, long addr) 17173215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin{ 172dad1eef568375be367868a2e3c4783251dbb7627Dmitry V. Levin if (print_timex(tcp, addr)) 17373215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin return 0; 17473215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin tcp->auxstr = xlookup(adjtimex_state, tcp->u_rval); 17573215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin if (tcp->auxstr) 17673215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin return RVAL_STR; 17773215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin return 0; 17873215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin} 17973215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin 180a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(adjtimex) 181165b15dbe8ca39334dd7059883c955829c95ac70Dmitry V. Levin{ 18273215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin if (exiting(tcp)) 18373215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin return do_adjtimex(tcp, tcp->u_arg[0]); 18476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 18576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 1861e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 1870ed617bd66624cec6138102545d73b2e2346f1f6Dmitry V. Levin#include "xlat/clockflags.h" 1880ed617bd66624cec6138102545d73b2e2346f1f6Dmitry V. Levin#include "xlat/clocknames.h" 18954a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath 190a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensenstatic void 191a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensenprintclockname(int clockid) 192a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen{ 193a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen#ifdef CLOCKID_TO_FD 194d35bdcad13caac3e167735e1f0fc50355b2f9523Dmitry V. Levin# include "xlat/cpuclocknames.h" 195d35bdcad13caac3e167735e1f0fc50355b2f9523Dmitry V. Levin 196a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen if (clockid < 0) { 197a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen if ((clockid & CLOCKFD_MASK) == CLOCKFD) 198a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen tprintf("FD_TO_CLOCKID(%d)", CLOCKID_TO_FD(clockid)); 199a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen else { 200a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen if(CPUCLOCK_PERTHREAD(clockid)) 201a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen tprintf("MAKE_THREAD_CPUCLOCK(%d,", CPUCLOCK_PID(clockid)); 202a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen else 203a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen tprintf("MAKE_PROCESS_CPUCLOCK(%d,", CPUCLOCK_PID(clockid)); 204a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen printxval(cpuclocknames, clockid & CLOCKFD_MASK, "CPUCLOCK_???"); 205a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen tprints(")"); 206a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen } 207a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen } 208a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen else 209a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen#endif 210a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen printxval(clocknames, clockid, "CLOCK_???"); 211a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen} 212a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen 213a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(clock_settime) 2141e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 21576c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin printclockname(tcp->u_arg[0]); 21676c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 2175938526c818336357b97caa8fd89d58a12987b02Dmitry V. Levin print_timespec(tcp, tcp->u_arg[1]); 21876c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin 21976c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin return RVAL_DECODED; 2201e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 2211e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 222a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(clock_gettime) 2231e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 2241e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 225a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen printclockname(tcp->u_arg[0]); 22660fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 2271e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 2285938526c818336357b97caa8fd89d58a12987b02Dmitry V. Levin print_timespec(tcp, tcp->u_arg[1]); 2291e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 2301e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 2311e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 2321e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 233a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(clock_nanosleep) 2341e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 2351e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 236a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen printclockname(tcp->u_arg[0]); 23760fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 238b2dee13345a62c80a677f3342cd525d611fbc632Roland McGrath printflags(clockflags, tcp->u_arg[1], "TIMER_???"); 23960fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 2405938526c818336357b97caa8fd89d58a12987b02Dmitry V. Levin print_timespec(tcp, tcp->u_arg[2]); 24160fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 2421e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 243c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin /* 244c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin * Second (returned) timespec is only significant 245c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin * if syscall was interrupted and flags is not TIMER_ABSTIME. 246c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin */ 247c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin if (!tcp->u_arg[1] && is_erestart(tcp)) { 248c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin temporarily_clear_syserror(tcp); 2495938526c818336357b97caa8fd89d58a12987b02Dmitry V. Levin print_timespec(tcp, tcp->u_arg[3]); 250c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin restore_cleared_syserror(tcp); 251c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin } else { 252c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin printaddr(tcp->u_arg[3]); 253c648b4a832a0913b37128bd27d07df635eafd029Dmitry V. Levin } 2541e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 2551e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 2561e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 2571e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 258a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(clock_adjtime) 25973215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin{ 26073215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin if (exiting(tcp)) 26173215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin return do_adjtimex(tcp, tcp->u_arg[1]); 262a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen printclockname(tcp->u_arg[0]); 26373215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin tprints(", "); 26473215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin return 0; 26573215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin} 26673215473cea2bc53a520b5285775be84501b1f2dDmitry V. Levin 267a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(timer_create) 2681e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 2691e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 270a5fea9060f382fb57f3c4c6492184cd2a7f92b40Stefan Sørensen printclockname(tcp->u_arg[0]); 27160fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 2726f950cc49907c0357aeaa66a9ef32970733f14aeDmitry V. Levin print_sigevent(tcp, tcp->u_arg[1]); 27360fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 2741e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 27571178358610ea6876001b3b81c96fd88dc5b0bb4Dmitry V. Levin printnum_int(tcp, tcp->u_arg[2], "%d"); 2761e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 2771e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 2781e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 2791e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 280a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(timer_settime) 2811e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 2821e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 28371178358610ea6876001b3b81c96fd88dc5b0bb4Dmitry V. Levin tprintf("%d, ", (int) tcp->u_arg[0]); 284b2dee13345a62c80a677f3342cd525d611fbc632Roland McGrath printflags(clockflags, tcp->u_arg[1], "TIMER_???"); 28560fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 2862206085929a18aa1428f6d1cefed444c67cbdb4dDmitry V. Levin print_itimerspec(tcp, tcp->u_arg[2]); 28760fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 2881e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 2892206085929a18aa1428f6d1cefed444c67cbdb4dDmitry V. Levin print_itimerspec(tcp, tcp->u_arg[3]); 2901e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 2911e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 2921e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 2931e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 294a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(timer_gettime) 2951e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 2961e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 29771178358610ea6876001b3b81c96fd88dc5b0bb4Dmitry V. Levin tprintf("%d, ", (int) tcp->u_arg[0]); 2981e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 2992206085929a18aa1428f6d1cefed444c67cbdb4dDmitry V. Levin print_itimerspec(tcp, tcp->u_arg[1]); 3001e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 3011e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 3021e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 303d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath 3040ed617bd66624cec6138102545d73b2e2346f1f6Dmitry V. Levin#include "xlat/timerfdflags.h" 305e46623403567c7dab387c8a9c6e40ae891c6ab21Roland McGrath 306a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(timerfd) 307e46623403567c7dab387c8a9c6e40ae891c6ab21Roland McGrath{ 30876c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprintf("%ld, ", tcp->u_arg[0]); 30976c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin printclockname(tcp->u_arg[0]); 31076c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 31176c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin printflags(timerfdflags, tcp->u_arg[2], "TFD_???"); 31276c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 3132206085929a18aa1428f6d1cefed444c67cbdb4dDmitry V. Levin print_itimerspec(tcp, tcp->u_arg[3]); 31476c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin 31507c878a9b5ff9b82158c5c72b177ed9a4eb16061Dmitry V. Levin return RVAL_DECODED | RVAL_FD; 316e46623403567c7dab387c8a9c6e40ae891c6ab21Roland McGrath} 317de328e684f86405d85881cdc489b88a27332d256Roland McGrath 318a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(timerfd_create) 319de328e684f86405d85881cdc489b88a27332d256Roland McGrath{ 32076c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin printclockname(tcp->u_arg[0]); 32176c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 32276c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin printflags(timerfdflags, tcp->u_arg[1], "TFD_???"); 32376c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin 32407c878a9b5ff9b82158c5c72b177ed9a4eb16061Dmitry V. Levin return RVAL_DECODED | RVAL_FD; 325de328e684f86405d85881cdc489b88a27332d256Roland McGrath} 326de328e684f86405d85881cdc489b88a27332d256Roland McGrath 327a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(timerfd_settime) 328de328e684f86405d85881cdc489b88a27332d256Roland McGrath{ 32976c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin printfd(tcp, tcp->u_arg[0]); 33076c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 33176c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin printflags(timerfdflags, tcp->u_arg[1], "TFD_???"); 33276c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 3332206085929a18aa1428f6d1cefed444c67cbdb4dDmitry V. Levin print_itimerspec(tcp, tcp->u_arg[2]); 33476c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin tprints(", "); 3352206085929a18aa1428f6d1cefed444c67cbdb4dDmitry V. Levin print_itimerspec(tcp, tcp->u_arg[3]); 33676c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin 33776c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin return RVAL_DECODED; 338de328e684f86405d85881cdc489b88a27332d256Roland McGrath} 339de328e684f86405d85881cdc489b88a27332d256Roland McGrath 340a0bd3749fc6fdf6364c1e269a4c02e8c153eb84bDmitry V. LevinSYS_FUNC(timerfd_gettime) 341de328e684f86405d85881cdc489b88a27332d256Roland McGrath{ 342de328e684f86405d85881cdc489b88a27332d256Roland McGrath if (entering(tcp)) { 3433138213bc9a827a372ad9f8009ebcc5d8797ce2dDmitry V. Levin printfd(tcp, tcp->u_arg[0]); 34460fe8c139c6f2febefe595781812ddf0864a6ab8Denys Vlasenko tprints(", "); 34576c8f66c4d3bbf7224b35619cd25dbf1063dd7dbDmitry V. Levin } else { 3462206085929a18aa1428f6d1cefed444c67cbdb4dDmitry V. Levin print_itimerspec(tcp, tcp->u_arg[1]); 347de328e684f86405d85881cdc489b88a27332d256Roland McGrath } 348de328e684f86405d85881cdc489b88a27332d256Roland McGrath return 0; 349de328e684f86405d85881cdc489b88a27332d256Roland McGrath} 350