Rev 2787 | Rev 4377 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2787 | Rev 3424 | ||
---|---|---|---|
Line 48... | Line 48... | ||
48 | #include <libadt/hash_table.h> |
48 | #include <libadt/hash_table.h> |
49 | #include <sysinfo.h> |
49 | #include <sysinfo.h> |
50 | #include <ddi.h> |
50 | #include <ddi.h> |
51 | #include <as.h> |
51 | #include <as.h> |
52 | 52 | ||
53 | #define NAME "NS" |
53 | #define NAME "ns" |
54 | 54 | ||
55 | #define NS_HASH_TABLE_CHAINS 20 |
55 | #define NS_HASH_TABLE_CHAINS 20 |
56 | 56 | ||
57 | static int register_service(ipcarg_t service, ipcarg_t phone, ipc_call_t *call); |
57 | static int register_service(ipcarg_t service, ipcarg_t phone, ipc_call_t *call); |
58 | static int connect_to_service(ipcarg_t service, ipc_call_t *call, |
58 | static int connect_to_service(ipcarg_t service, ipc_call_t *call, |
Line 102... | Line 102... | ||
102 | ipc_answer_2(callid, EOK, (ipcarg_t) *addr, AS_AREA_READ); |
102 | ipc_answer_2(callid, EOK, (ipcarg_t) *addr, AS_AREA_READ); |
103 | } |
103 | } |
104 | 104 | ||
105 | int main(int argc, char **argv) |
105 | int main(int argc, char **argv) |
106 | { |
106 | { |
- | 107 | printf(NAME ": HelenOS IPC Naming Service\n"); |
|
- | 108 | ||
107 | ipc_call_t call; |
109 | ipc_call_t call; |
108 | ipc_callid_t callid; |
110 | ipc_callid_t callid; |
109 | 111 | ||
110 | ipcarg_t retval; |
112 | ipcarg_t retval; |
111 | 113 | ||
112 | if (!hash_table_create(&ns_hash_table, NS_HASH_TABLE_CHAINS, 3, |
114 | if (!hash_table_create(&ns_hash_table, NS_HASH_TABLE_CHAINS, 3, |
113 | &ns_hash_table_ops)) { |
115 | &ns_hash_table_ops)) { |
- | 116 | printf(NAME ": No memory available\n"); |
|
114 | return ENOMEM; |
117 | return ENOMEM; |
115 | } |
118 | } |
116 | 119 | ||
- | 120 | printf(NAME ": Accepting connections\n"); |
|
117 | while (1) { |
121 | while (1) { |
118 | callid = ipc_wait_for_call(&call); |
122 | callid = ipc_wait_for_call(&call); |
119 | switch (IPC_GET_METHOD(call)) { |
123 | switch (IPC_GET_METHOD(call)) { |
120 | case IPC_M_SHARE_IN: |
124 | case IPC_M_SHARE_IN: |
121 | switch (IPC_GET_ARG3(call)) { |
125 | switch (IPC_GET_ARG3(call)) { |
Line 154... | Line 158... | ||
154 | } |
158 | } |
155 | if (!(callid & IPC_CALLID_NOTIFICATION)) { |
159 | if (!(callid & IPC_CALLID_NOTIFICATION)) { |
156 | ipc_answer_0(callid, retval); |
160 | ipc_answer_0(callid, retval); |
157 | } |
161 | } |
158 | } |
162 | } |
- | 163 | ||
- | 164 | /* Not reached */ |
|
- | 165 | return 0; |
|
159 | } |
166 | } |
160 | 167 | ||
161 | /** Register service. |
168 | /** Register service. |
162 | * |
169 | * |
163 | * @param service Service to be registered. |
170 | * @param service Service to be registered. |