Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
[dragonfly.git] / test / sysmsg / sysmsg1.c
1 /*
2  * sysmsg1.c
3  * 
4  * $DragonFly: src/test/sysmsg/sysmsg1.c,v 1.3 2004/09/02 11:21:12 eirikn Exp $
5  */
6
7 #include <time.h>
8
9 #include "syscall.h"
10
11 __attribute__((weak))
12
13 int
14 write_test(int fd, void * buf, size_t nbyte)
15 {
16         struct write_args writemsg;
17         int error;
18
19         INITMSGSYSCALL(write, 0);
20         writemsg.fd = fd;
21         writemsg.buf = buf;
22         writemsg.nbyte = nbyte;
23         DOMSGSYSCALL(write);
24         printf("write: error: %d\n", error);
25         printf("write: ms_error: %d\n", writemsg.usrmsg.umsg.ms_error);
26         printf("write: ms_result: %d\n", writemsg.usrmsg.umsg.u.ms_result);
27         FINISHMSGSYSCALL(write, error);
28 }
29
30 int
31 nanosleep_test(const struct timespec * rqtp, struct timespec * rmtp)
32 {
33         struct nanosleep_args nanosleepmsg;
34         int error;
35
36         INITMSGSYSCALL(nanosleep, 0);
37         nanosleepmsg.rqtp = rqtp;
38         nanosleepmsg.rmtp = rmtp;
39         DOMSGSYSCALL(nanosleep);
40         printf("nanosleep: error: %d\n", error);
41         printf("nanosleep: ms_error: %d\n", nanosleepmsg.usrmsg.umsg.ms_error);
42         printf("nanosleep: ms_result: %d\n", nanosleepmsg.usrmsg.umsg.u.ms_result);
43         FINISHMSGSYSCALL(nanosleep, error);
44 }
45
46 int
47 main(void)
48 {
49         struct timespec ts, ts2;
50         int error;
51
52         printf("synchronous sendsys() test: write 'hello!' and 1.5 second nanosleep\n");
53         error = write_test(1, "hello!\n", 7);
54         if (error == -1)
55                 err(1, "write");
56         ts.tv_sec = 1;
57         ts.tv_nsec = 500 * 1000000;
58         error = nanosleep_test(&ts, &ts2);
59         if (error == -1)
60                 err(1, "nanosleep");
61 }