time.c revision a7945a3d4e144674a8dd1d885e7086bc274e391b
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 * $Id$ 3076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman */ 3176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 3276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#include "defs.h" 3376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 3476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#ifdef LINUX 3576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#include <linux/version.h> 36d856b99aff36012d1c8bc72012d0ede414e17971Wichert Akkerman#include <sys/timex.h> 37d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath#include <linux/ioctl.h> 38d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath#include <linux/rtc.h> 3976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#endif /* LINUX */ 4076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 41a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levinstruct timeval32 4276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 43a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin u_int32_t tv_sec, tv_usec; 44a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin}; 4576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 46a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levinvoid 47a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levinprinttv_bitness(struct tcb *tcp, long addr, enum bitness_t bitness) 48a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin{ 4976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (addr == 0) 5076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("NULL"); 5176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else if (!verbose(tcp)) 5276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("%#lx", addr); 5376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else 54a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin { 55a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin int rc; 5676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 57a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if (bitness == BITNESS_32 58a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin#if defined(LINUX) && SUPPORTED_PERSONALITIES > 1 59a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin || personality_wordsize[current_personality] == 4 60a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin#endif 61a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin ) 62a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin { 63a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin struct timeval32 tv; 64a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin 65a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if ((rc = umove(tcp, addr, &tv)) >= 0) 66a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin tprintf("{%u, %u}", 67a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin tv.tv_sec, tv.tv_usec); 68a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin } else 69a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin { 70a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin struct timeval tv; 71a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin 72a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if ((rc = umove(tcp, addr, &tv)) >= 0) 73a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin tprintf("{%lu, %lu}", 74a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin (unsigned long) tv.tv_sec, 75a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin (unsigned long) tv.tv_usec); 76a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin } 77a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin 78a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if (rc < 0) 79a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin tprintf("{...}"); 80a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin } 81a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin} 82221f54f721a2f74e629bb70e34888205f68e95ccWichert Akkerman 83f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanvoid 84a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levinsprinttv(struct tcb *tcp, long addr, enum bitness_t bitness, char *buf) 85f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 86a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if (addr == 0) 87a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin strcpy(buf, "NULL"); 88a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin else if (!verbose(tcp)) 89a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin sprintf(buf, "%#lx", addr); 90a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin else 91a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin { 92a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin int rc; 93a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin 94a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if (bitness == BITNESS_32 95a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin#if defined(LINUX) && SUPPORTED_PERSONALITIES > 1 96a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin || personality_wordsize[current_personality] == 4 97f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 98a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin ) 99a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin { 100a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin struct timeval32 tv; 101a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin 102a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if ((rc = umove(tcp, addr, &tv)) >= 0) 103a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin sprintf(buf, "{%u, %u}", 104a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin tv.tv_sec, tv.tv_usec); 105a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin } else 106a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin { 107a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin struct timeval tv; 108a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin 109a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if ((rc = umove(tcp, addr, &tv)) >= 0) 110a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin sprintf(buf, "{%lu, %lu}", 111a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin (unsigned long) tv.tv_sec, 112a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin (unsigned long) tv.tv_usec); 113a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin } 114f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 115a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin if (rc < 0) 116a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin strcpy(buf, "{...}"); 117a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin } 118a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin} 119f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 12076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 12176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_time(tcp) 12276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 12376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 12476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (exiting(tcp)) { 12576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#ifndef SVR4 12676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printnum(tcp, tcp->u_arg[0], "%ld"); 12776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#endif /* SVR4 */ 12876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 12976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 13076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 13176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 13276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 13376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_stime(tcp) 13476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 13576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 13676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (exiting(tcp)) { 13776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printnum(tcp, tcp->u_arg[0], "%ld"); 13876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 13976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 14076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 14176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 14276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 14376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_gettimeofday(tcp) 14476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 14576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 14676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (exiting(tcp)) { 14776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (syserror(tcp)) { 14876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("%#lx, %#lx", 14976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tcp->u_arg[0], tcp->u_arg[1]); 15076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 15176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 15276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printtv(tcp, tcp->u_arg[0]); 15376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#ifndef SVR4 15476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf(", "); 15576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printtv(tcp, tcp->u_arg[1]); 15676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#endif /* !SVR4 */ 15776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 15876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 15976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 16076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 161f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 162f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 163f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanint 164f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermansys_osf_gettimeofday(tcp) 165f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanstruct tcb *tcp; 166f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 167f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (exiting(tcp)) { 168f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (syserror(tcp)) { 169f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf("%#lx, %#lx", 170f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tcp->u_arg[0], tcp->u_arg[1]); 171f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman return 0; 172f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } 173a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin printtv_bitness(tcp, tcp->u_arg[0], BITNESS_32); 174f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifndef SVR4 175f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf(", "); 176a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin printtv_bitness(tcp, tcp->u_arg[1], BITNESS_32); 177f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif /* !SVR4 */ 178f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } 179f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman return 0; 180f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 181f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 182f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 18376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 18476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_settimeofday(tcp) 18576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 18676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 18776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (entering(tcp)) { 18876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printtv(tcp, tcp->u_arg[0]); 18976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#ifndef SVR4 19076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf(", "); 19176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printtv(tcp, tcp->u_arg[1]); 19276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#endif /* !SVR4 */ 19376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 19476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 19576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 19676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 197f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 198f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanint 199f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermansys_osf_settimeofday(tcp) 200f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanstruct tcb *tcp; 201f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 202f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (entering(tcp)) { 203a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin printtv_bitness(tcp, tcp->u_arg[0], BITNESS_32); 204f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifndef SVR4 205f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf(", "); 206a7945a3d4e144674a8dd1d885e7086bc274e391bDmitry V. Levin printtv_bitness(tcp, tcp->u_arg[1], BITNESS_32); 207f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif /* !SVR4 */ 208f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } 209f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman return 0; 210f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 211f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 212f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 21376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 21476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_adjtime(tcp) 21576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 21676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 21776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (entering(tcp)) { 21876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printtv(tcp, tcp->u_arg[0]); 21976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf(", "); 22076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } else { 22176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (syserror(tcp)) 22276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("%#lx", tcp->u_arg[1]); 22376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else 22476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printtv(tcp, tcp->u_arg[1]); 22576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 22676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 22776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 22876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 229d9f816f60457930af27349fac3d23b3b78338036Roland McGrathstatic const struct xlat which[] = { 23076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman { ITIMER_REAL, "ITIMER_REAL" }, 23176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman { ITIMER_VIRTUAL,"ITIMER_VIRTUAL"}, 23276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman { ITIMER_PROF, "ITIMER_PROF" }, 23376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman { 0, NULL }, 23476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman}; 23576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 23676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstatic void 23776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanprintitv(tcp, addr) 23876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 23976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanlong addr; 24076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 24176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman struct itimerval itv; 24276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 24376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (addr == 0) 24476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("NULL"); 24576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else if (!verbose(tcp)) 24676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("%#lx", addr); 24776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else if (umove(tcp, addr, &itv) < 0) 24876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("{...}"); 24976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else { 25076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("{it_interval={%lu, %lu}, it_value={%lu, %lu}}", 25176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman (long) itv.it_interval.tv_sec, (long) itv.it_interval.tv_usec, 25276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman (long) itv.it_value.tv_sec, (long) itv.it_value.tv_usec); 25376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 25476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 25576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 256f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 257f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 258f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanstatic void 259f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanprintitv32(tcp, addr) 260f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanstruct tcb *tcp; 261f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanlong addr; 262f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 263f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman struct itimerval32 264f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman { 265f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman struct timeval32 it_interval; 266f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman struct timeval32 it_value; 267f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } itv; 268f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 269f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (addr == 0) 270f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf("NULL"); 271f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman else if (!verbose(tcp)) 272f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf("%#lx", addr); 273f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman else if (umove(tcp, addr, &itv) < 0) 274f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf("{...}"); 275f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman else { 276f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf("{it_interval={%u, %u}, it_value={%u, %u}}", 277f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman itv.it_interval.tv_sec, itv.it_interval.tv_usec, 278f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman itv.it_value.tv_sec, itv.it_value.tv_usec); 279f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } 280f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 281f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 282f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 28376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 28476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_getitimer(tcp) 28576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 28676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 28776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (entering(tcp)) { 28876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printxval(which, tcp->u_arg[0], "ITIMER_???"); 28976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf(", "); 29076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } else { 29176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (syserror(tcp)) 29276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("%#lx", tcp->u_arg[1]); 29376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else 29476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printitv(tcp, tcp->u_arg[1]); 29576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 29676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 29776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 29876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 299f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 300f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 301f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanint 302f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermansys_osf_getitimer(tcp) 303f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanstruct tcb *tcp; 304f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 305f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (entering(tcp)) { 306f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman printxval(which, tcp->u_arg[0], "ITIMER_???"); 307f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf(", "); 308f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } else { 309f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (syserror(tcp)) 310f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf("%#lx", tcp->u_arg[1]); 311f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman else 312f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman printitv32(tcp, tcp->u_arg[1]); 313f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } 314f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman return 0; 315f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 316f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 317f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 31876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 31976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_setitimer(tcp) 32076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 32176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 32276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (entering(tcp)) { 32376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printxval(which, tcp->u_arg[0], "ITIMER_???"); 32476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf(", "); 32576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printitv(tcp, tcp->u_arg[1]); 32676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf(", "); 32776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } else { 32876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (syserror(tcp)) 32976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("%#lx", tcp->u_arg[2]); 33076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else 33176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman printitv(tcp, tcp->u_arg[2]); 33276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 33376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 33476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 33576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 336f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#ifdef ALPHA 337f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanint 338f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermansys_osf_setitimer(tcp) 339f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkermanstruct tcb *tcp; 340f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman{ 341f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (entering(tcp)) { 342f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman printxval(which, tcp->u_arg[0], "ITIMER_???"); 343f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf(", "); 344f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman printitv32(tcp, tcp->u_arg[1]); 345f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf(", "); 346f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } else { 347f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman if (syserror(tcp)) 348f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman tprintf("%#lx", tcp->u_arg[2]); 349f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman else 350f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman printitv32(tcp, tcp->u_arg[2]); 351f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman } 352f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman return 0; 353f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman} 354f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman#endif 355f5eeabb156641482abd504fb98b039e1aae4ae87Wichert Akkerman 35676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#ifdef LINUX 35776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 35876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanint 35976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermansys_adjtimex(tcp) 36076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkermanstruct tcb *tcp; 36176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman{ 36276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman struct timex txc; 36376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman 36476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (exiting(tcp)) { 36576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman if (tcp->u_arg[0] == 0) 36676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("NULL"); 36776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else if (syserror(tcp) || !verbose(tcp)) 36876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("%#lx", tcp->u_arg[0]); 36976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else if (umove(tcp, tcp->u_arg[0], &txc) < 0) 37076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("{...}"); 37176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman else { 37276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#if LINUX_VERSION_CODE < 66332 37376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("{mode=%d, offset=%ld, frequency=%ld, ", 37476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.mode, txc.offset, txc.frequency); 37576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("maxerror=%ld, esterror=%lu, status=%u, ", 37676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.maxerror, txc.esterror, txc.status); 37776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("time_constant=%ld, precision=%lu, ", 37876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.time_constant, txc.precision); 37976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("tolerance=%ld, time={%lu, %lu}}", 38076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.tolerance, (long) txc.time.tv_sec, 38176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman (long) txc.time.tv_usec); 38276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#else 38376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("{modes=%d, offset=%ld, freq=%ld, ", 38476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.modes, txc.offset, txc.freq); 38576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("maxerror=%ld, esterror=%lu, status=%u, ", 38676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.maxerror, txc.esterror, txc.status); 38776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("constant=%ld, precision=%lu, ", 38876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.constant, txc.precision); 38976baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman tprintf("tolerance=%ld, time={%lu, %lu}}", 39076baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman txc.tolerance, (long) txc.time.tv_sec, 39176baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman (long) txc.time.tv_usec); 39276baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman /* there's a bunch of other stuff, but it's not 39376baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman * worth the time or the trouble to include */ 39476baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#endif 39576baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 39676baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman } 39776baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman return 0; 39876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman} 3991e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 400d9f816f60457930af27349fac3d23b3b78338036Roland McGrathstatic const struct xlat clockflags[] = { 4011e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath { TIMER_ABSTIME, "TIMER_ABSTIME" }, 4021e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath { 0, NULL } 4031e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath}; 4041e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 405d9f816f60457930af27349fac3d23b3b78338036Roland McGrathstatic const struct xlat clocknames[] = { 40655a00f8092d9596a4ca619017bfba0dea2e085d1Roland McGrath#ifdef CLOCK_REALTIME 40754a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath { CLOCK_REALTIME, "CLOCK_REALTIME" }, 40855a00f8092d9596a4ca619017bfba0dea2e085d1Roland McGrath#endif 40955a00f8092d9596a4ca619017bfba0dea2e085d1Roland McGrath#ifdef CLOCK_MONOTONIC 41054a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath { CLOCK_MONOTONIC, "CLOCK_MONOTONIC" }, 41155a00f8092d9596a4ca619017bfba0dea2e085d1Roland McGrath#endif 41254a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath { 0, NULL } 41354a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath}; 41454a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath 4151e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathint 4161e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathsys_clock_settime(tcp) 4171e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathstruct tcb *tcp; 4181e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 4191e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 42054a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath printxval(clocknames, tcp->u_arg[0], "CLOCK_???"); 42154a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath tprintf(", "); 4221e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printtv(tcp, tcp->u_arg[1]); 4231e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 4241e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 4251e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 4261e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 4271e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathint 4281e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathsys_clock_gettime(tcp) 4291e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathstruct tcb *tcp; 4301e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 4311e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 43254a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath printxval(clocknames, tcp->u_arg[0], "CLOCK_???"); 43354a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath tprintf(", "); 4341e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 4351e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (syserror(tcp)) 4361e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("%#lx", tcp->u_arg[1]); 4371e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath else 4381e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printtv(tcp, tcp->u_arg[1]); 4391e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 4401e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 4411e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 4421e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 4431e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathint 4441e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathsys_clock_nanosleep(tcp) 4451e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathstruct tcb *tcp; 4461e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 4471e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 44854a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath printxval(clocknames, tcp->u_arg[0], "CLOCK_???"); 44954a4edd69a320542ddd0dffec05dacab7443d453Roland McGrath tprintf(", "); 450b2dee13345a62c80a677f3342cd525d611fbc632Roland McGrath printflags(clockflags, tcp->u_arg[1], "TIMER_???"); 4511e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf(", "); 4521e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printtv(tcp, tcp->u_arg[2]); 4531e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf(", "); 4541e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 4551e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (syserror(tcp)) 4561e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("%#lx", tcp->u_arg[3]); 4571e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath else 4581e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printtv(tcp, tcp->u_arg[3]); 4591e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 4601e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 4611e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 4621e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 4631e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath#ifndef SIGEV_THREAD_ID 4641e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath# define SIGEV_THREAD_ID 4 4651e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath#endif 466d9f816f60457930af27349fac3d23b3b78338036Roland McGrathstatic const struct xlat sigev_value[] = { 4671e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath { SIGEV_SIGNAL+1, "SIGEV_SIGNAL" }, 4681e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath { SIGEV_NONE+1, "SIGEV_NONE" }, 4691e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath { SIGEV_THREAD+1, "SIGEV_THREAD" }, 4701e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath { SIGEV_THREAD_ID+1, "SIGEV_THREAD_ID" }, 4711e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath { 0, NULL } 4721e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath}; 4731e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 4741e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathvoid 4751e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathprintsigevent(tcp, arg) 4761e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathstruct tcb *tcp; 4771e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathlong arg; 4781e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 4791e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath struct sigevent sev; 4801e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (umove (tcp, arg, &sev) < 0) 4811e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("{...}"); 4821e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath else { 483675d4a6dba13915527309c962c38f5f961ec2996Roland McGrath tprintf("{%p, ", sev.sigev_value.sival_ptr); 484675d4a6dba13915527309c962c38f5f961ec2996Roland McGrath if (sev.sigev_notify == SIGEV_SIGNAL) 485675d4a6dba13915527309c962c38f5f961ec2996Roland McGrath tprintf("%s, ", signame(sev.sigev_signo)); 486675d4a6dba13915527309c962c38f5f961ec2996Roland McGrath else 487675d4a6dba13915527309c962c38f5f961ec2996Roland McGrath tprintf("%u, ", sev.sigev_signo); 4881e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printxval(sigev_value, sev.sigev_notify+1, "SIGEV_???"); 4891e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf(", "); 4901e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (sev.sigev_notify == SIGEV_THREAD_ID) 4911e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath /* _pad[0] is the _tid field which might not be 4921e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath present in the userlevel definition of the 4931e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath struct. */ 4941e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("{%d}", sev._sigev_un._pad[0]); 495d4c85ebbc64b1eb141b310a4634c6ca37fd352c1Roland McGrath else if (sev.sigev_notify == SIGEV_THREAD) 496d4c85ebbc64b1eb141b310a4634c6ca37fd352c1Roland McGrath tprintf("{%p, %p}", sev.sigev_notify_function, 497d4c85ebbc64b1eb141b310a4634c6ca37fd352c1Roland McGrath sev.sigev_notify_attributes); 4981e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath else 4991e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("{...}"); 5001e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("}"); 5011e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 5021e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 5031e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 5041e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathint 5051e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathsys_timer_create(tcp) 5061e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathstruct tcb *tcp; 5071e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 5081e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 509675d4a6dba13915527309c962c38f5f961ec2996Roland McGrath printxval(clocknames, tcp->u_arg[0], "CLOCK_???"); 510675d4a6dba13915527309c962c38f5f961ec2996Roland McGrath tprintf(", "); 5111e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printsigevent(tcp, tcp->u_arg[1]); 5121e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf(", "); 5131e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 514ac518d10777f9dd95aad22939da6c867cf4c193eDmitry V. Levin void *p; 515ac518d10777f9dd95aad22939da6c867cf4c193eDmitry V. Levin 516ac518d10777f9dd95aad22939da6c867cf4c193eDmitry V. Levin if (syserror(tcp) || umove(tcp, tcp->u_arg[2], &p) < 0) 5171e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("%#lx", tcp->u_arg[2]); 518ac518d10777f9dd95aad22939da6c867cf4c193eDmitry V. Levin else 5191e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("{%p}", p); 5201e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 5211e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 5221e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 5231e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 5241e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathint 5251e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathsys_timer_settime(tcp) 5261e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathstruct tcb *tcp; 5271e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 5281e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 5291e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("%#lx, ", tcp->u_arg[0]); 530b2dee13345a62c80a677f3342cd525d611fbc632Roland McGrath printflags(clockflags, tcp->u_arg[1], "TIMER_???"); 5311e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf(", "); 5321e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printitv(tcp, tcp->u_arg[2]); 5331e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf(", "); 5341e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 5351e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (syserror(tcp)) 5361e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("%#lx", tcp->u_arg[3]); 5371e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath else 5381e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printitv(tcp, tcp->u_arg[3]); 5391e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 5401e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 5411e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 5421e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath 5431e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathint 5441e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathsys_timer_gettime(tcp) 5451e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrathstruct tcb *tcp; 5461e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath{ 5471e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (entering(tcp)) { 5481e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("%#lx, ", tcp->u_arg[0]); 5491e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } else { 5501e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath if (syserror(tcp)) 5511e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath tprintf("%#lx", tcp->u_arg[1]); 5521e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath else 5531e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath printitv(tcp, tcp->u_arg[1]); 5541e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath } 5551e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath return 0; 5561e35679bbb8c840bd0b107c68cb187feeb3e3282Roland McGrath} 557d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath 558d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathstatic void 559d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathprint_rtc(tcp, rt) 560d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathstruct tcb *tcp; 561d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathconst struct rtc_time *rt; 562d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath{ 563d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf("{tm_sec=%d, tm_min=%d, tm_hour=%d, " 564d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath "tm_mday=%d, tm_mon=%d, tm_year=%d, ", 565d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath rt->tm_sec, rt->tm_min, rt->tm_hour, 566d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath rt->tm_mday, rt->tm_mon, rt->tm_year); 567d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (!abbrev(tcp)) 568d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf("tm_wday=%d, tm_yday=%d, tm_isdst=%d}", 569d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath rt->tm_wday, rt->tm_yday, rt->tm_isdst); 570d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath else 571d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf("...}"); 572d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath} 573d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath 574d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathint 575d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathrtc_ioctl(tcp, code, arg) 576d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathstruct tcb *tcp; 577d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathlong code; 578d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrathlong arg; 579d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath{ 580d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath switch (code) { 581d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_ALM_SET: 582d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_SET_TIME: 583d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (entering(tcp)) { 584d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath struct rtc_time rt; 585d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (umove(tcp, arg, &rt) < 0) 586d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", %#lx", arg); 587d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath else { 588d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", "); 589d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath print_rtc(tcp, &rt); 590d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 591d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 592d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath break; 593d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_ALM_READ: 594d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_RD_TIME: 595d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (exiting(tcp)) { 596d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath struct rtc_time rt; 597d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (syserror(tcp) || umove(tcp, arg, &rt) < 0) 598d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", %#lx", arg); 599d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath else { 600d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", "); 601d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath print_rtc(tcp, &rt); 602d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 603d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 604d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath break; 605d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_IRQP_SET: 606d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_EPOCH_SET: 607d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (entering(tcp)) 608d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", %lu", arg); 609d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath break; 610d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_IRQP_READ: 611d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_EPOCH_READ: 612d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (exiting(tcp)) 613d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", %lu", arg); 614d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath break; 615d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_WKALM_SET: 616d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (entering(tcp)) { 617d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath struct rtc_wkalrm wk; 618d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (umove(tcp, arg, &wk) < 0) 619d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", %#lx", arg); 620d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath else { 621d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", {enabled=%d, pending=%d, ", 622d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath wk.enabled, wk.pending); 623d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath print_rtc(tcp, &wk.time); 624d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf("}"); 625d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 626d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 627d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath break; 628d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath case RTC_WKALM_RD: 629d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (exiting(tcp)) { 630d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath struct rtc_wkalrm wk; 631d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (syserror(tcp) || umove(tcp, arg, &wk) < 0) 632d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", %#lx", arg); 633d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath else { 634d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", {enabled=%d, pending=%d, ", 635d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath wk.enabled, wk.pending); 636d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath print_rtc(tcp, &wk.time); 637d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf("}"); 638d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 639d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 640d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath break; 641d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath default: 642d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath if (entering(tcp)) 643d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath tprintf(", %#lx", arg); 644d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath break; 645d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath } 646d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath return 1; 647d83c50b8e44db2a2e19d048ab7d1e1caf1fa1996Roland McGrath} 64876baf7c9f6dd61a15524ad43c1b690c252cf5b7Wichert Akkerman#endif /* LINUX */ 649