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