source: mainline/ns/ns.c@ 7048773

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 7048773 was 7048773, checked in by Ondrej Palkovsky <ondrap@…>, 19 years ago

More IPC added syscall for hangup and some tests.

  • Property mode set to 100644
File size: 1.4 KB
Line 
1#include <ipc.h>
2#include <stdio.h>
3#include <unistd.h>
4#include <stdlib.h>
5#include <ns.h>
6#include <errno.h>
7
8static int service;
9
10int main(int argc, char **argv)
11{
12 ipc_call_t call;
13 ipc_callid_t callid;
14
15 ipcarg_t retval, arg1, arg2;
16
17 printf("NS:Name service started.\n");
18 while (1) {
19 call.taskid = -1;
20 callid = ipc_wait_for_call(&call, 0);
21 printf("NS:Call task=%llX,phone=%lX..",
22 call.taskid,call.data.phoneid);
23 switch (IPC_GET_METHOD(call.data)) {
24 case IPC_M_PHONE_HUNGUP:
25 printf("Phone hung up.\n");
26 retval = 0;
27 break;
28 case IPC_M_CONNECT_TO_ME:
29 printf("Somebody connecting phid=%zd.\n", IPC_GET_ARG3(call.data));
30 service = IPC_GET_ARG3(call.data);
31 retval = 0;
32 break;
33 case IPC_M_CONNECT_ME_TO:
34 printf("Connectmeto: %zd\n",
35 IPC_GET_ARG1(call.data));
36 retval = 0;
37 break;
38 case NS_PING:
39 printf("Ping...%P %P\n", IPC_GET_ARG1(call.data),
40 IPC_GET_ARG2(call.data));
41 retval = 0;
42 arg1 = 0xdead;
43 arg2 = 0xbeef;
44 break;
45 case NS_HANGUP:
46 printf("Closing connection.\n");
47 retval = EHANGUP;
48 break;
49 case NS_PING_SVC:
50 printf("NS:Pinging service %d\n", service);
51 ipc_call_sync(service, NS_PING, 0xbeef, 0);
52 printf("NS:Got pong\n");
53 break;
54 default:
55 printf("Unknown method: %zd\n", IPC_GET_METHOD(call.data));
56 retval = ENOENT;
57 break;
58 }
59 ipc_answer(callid, retval, arg1, arg2);
60 }
61}
Note: See TracBrowser for help on using the repository browser.