Changeset 42a9f27 in mainline
- Timestamp:
- 2010-10-17T20:14:11Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 404dbae
- Parents:
- 4a3b501
- Location:
- uspace/lib/net
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/net/include/netif_interface.h
r4a3b501 r42a9f27 27 27 */ 28 28 29 /** @addtogroup netif29 /** @addtogroup libnet 30 30 * @{ 31 31 */ 32 32 33 #ifndef __NET_NETIF_INTERFACE_H__34 #define __NET_NETIF_INTERFACE_H__33 #ifndef LIBNET_NETIF_INTERFACE_H_ 34 #define LIBNET_NETIF_INTERFACE_H_ 35 35 36 36 #include <netif_remote.h> -
uspace/lib/net/include/netif_local.h
r4a3b501 r42a9f27 27 27 */ 28 28 29 /** @addtogroup netif29 /** @addtogroup libnet 30 30 * @{ 31 31 */ … … 36 36 */ 37 37 38 #ifndef __NET_NETIF_LOCAL_H__39 #define __NET_NETIF_LOCAL_H__38 #ifndef NET_NETIF_LOCAL_H_ 39 #define NET_NETIF_LOCAL_H_ 40 40 41 41 #include <async.h> … … 43 43 #include <ipc/ipc.h> 44 44 #include <ipc/services.h> 45 #include <err.h>46 45 47 46 #include <adt/measured_strings.h> … … 49 48 #include <net/packet.h> 50 49 51 /** Network interface device specific data. 52 * 53 */ 50 /** Network interface device specific data. */ 54 51 typedef struct { 55 52 device_id_t device_id; /**< Device identifier. */ … … 67 64 DEVICE_MAP_DECLARE(netif_device_map, netif_device_t); 68 65 69 /** Network interface module skeleton global data. 70 * 71 */ 66 /** Network interface module skeleton global data. */ 72 67 typedef struct { 73 68 int net_phone; /**< Networking module phone. */ … … 81 76 * 82 77 * This function has to be implemented in user code. 83 *84 78 */ 85 79 extern int netif_initialize(void); … … 89 83 * This has to be implemented in user code. 90 84 * 91 * @param[in] device_id 92 * @param[in] irq 93 * @param[in] io 94 * 95 * @return 96 * @return Other error codes as defined for the find_device() function.97 * @return Other error codes as defined for the specific module message98 * implementation.99 * 85 * @param[in] device_id The device identifier. 86 * @param[in] irq The device interrupt number. 87 * @param[in] io The device input/output address. 88 * 89 * @return EOK on success. 90 * @return Other error codes as defined for the find_device() 91 * function. 92 * @return Other error codes as defined for the specific module 93 * message implementation. 100 94 */ 101 95 extern int netif_probe_message(device_id_t device_id, int irq, uintptr_t io); … … 105 99 * This has to be implemented in user code. 106 100 * 107 * @param[in] device_id The device identifier. 108 * @param[in] packet The packet queue. 109 * @param[in] sender The sending module service. 110 * 111 * @return EOK on success. 112 * @return EFORWARD if the device is not active (in the NETIF_ACTIVE state). 113 * @return Other error codes as defined for the find_device() function. 114 * @return Other error codes as defined for the specific module message 115 * implementation. 116 * 101 * @param[in] device_id The device identifier. 102 * @param[in] packet The packet queue. 103 * @param[in] sender The sending module service. 104 * 105 * @return EOK on success. 106 * @return EFORWARD if the device is not active (in the 107 * NETIF_ACTIVE state). 108 * @return Other error codes as defined for the find_device() 109 * function. 110 * @return Other error codes as defined for the specific module 111 * message implementation. 117 112 */ 118 113 extern int netif_send_message(device_id_t device_id, packet_t packet, … … 123 118 * This has to be implemented in user code. 124 119 * 125 * @param[in] device 126 * 127 * @return 128 * @return Other error codes as defined for the find_device() function.129 * @return Other error codes as defined for the specific module message130 * implementation.131 * 120 * @param[in] device The device structure. 121 * 122 * @return EOK on success. 123 * @return Other error codes as defined for the find_device() 124 * function. 125 * @return Other error codes as defined for the specific module 126 * message implementation. 132 127 */ 133 128 extern int netif_start_message(netif_device_t *device); … … 137 132 * This has to be implemented in user code. 138 133 * 139 * @param[in] device 140 * 141 * @return 142 * @return Other error codes as defined for the find_device() function.143 * @return Other error codes as defined for the specific module message144 * implementation.145 * 134 * @param[in] device The device structure. 135 * 136 * @return EOK on success. 137 * @return Other error codes as defined for the find_device() 138 * function. 139 * @return Other error codes as defined for the specific module 140 * message implementation. 146 141 */ 147 142 extern int netif_stop_message(netif_device_t *device); … … 151 146 * This has to be implemented in user code. 152 147 * 153 * @param[in] device_idThe device identifier.154 * @param[out] address 155 * 156 * @return 157 * @return 158 * @return 159 * @return Other error codes as defined for the find_device() function.160 * @return Other error codes as defined for the specific module message161 * implementation.162 * 148 * @param[in] device_id The device identifier. 149 * @param[out] address The device local hardware address. 150 * 151 * @return EOK on success. 152 * @return EBADMEM if the address parameter is NULL. 153 * @return ENOENT if there no such device. 154 * @return Other error codes as defined for the find_device() 155 * function. 156 * @return Other error codes as defined for the specific module 157 * message implementation. 163 158 */ 164 159 extern int netif_get_addr_message(device_id_t device_id, … … 170 165 * skeleton. This has to be implemented in user code. 171 166 * 172 * @param[in] callidThe message identifier.173 * @param[in] callThe message parameters.174 * @param[out] answer 167 * @param[in] callid The message identifier. 168 * @param[in] call The message parameters. 169 * @param[out] answer The message answer parameters. 175 170 * @param[out] answer_count The last parameter for the actual answer in 176 * the answer parameter. 177 * 178 * @return EOK on success. 179 * @return ENOTSUP if the message is not known. 180 * @return Other error codes as defined for the specific module message 181 * implementation. 182 * 171 * the answer parameter. 172 * 173 * @return EOK on success. 174 * @return ENOTSUP if the message is not known. 175 * @return Other error codes as defined for the specific module 176 * message implementation. 183 177 */ 184 178 extern int netif_specific_message(ipc_callid_t callid, ipc_call_t *call, … … 189 183 * This has to be implemented in user code. 190 184 * 191 * @param[in] device_idThe device identifier.192 * @param[out] stats 193 * 194 * @return 195 * @return Other error codes as defined for the find_device() function.196 * @return Other error codes as defined for the specific module message197 * implementation.198 * 185 * @param[in] device_id The device identifier. 186 * @param[out] stats The device usage statistics. 187 * 188 * @return EOK on success. 189 * @return Other error codes as defined for the find_device() 190 * function. 191 * @return Other error codes as defined for the specific module 192 * message implementation. 199 193 */ 200 194 extern int netif_get_device_stats(device_id_t device_id, -
uspace/lib/net/include/netif_remote.h
r4a3b501 r42a9f27 27 27 */ 28 28 29 /** @addtogroup netif29 /** @addtogroup libnet 30 30 * @{ 31 31 */ 32 32 33 #ifndef __NET_NETIF_REMOTE_H__34 #define __NET_NETIF_REMOTE_H__33 #ifndef LIBNET_NETIF_REMOTE_H_ 34 #define LIBNET_NETIF_REMOTE_H_ 35 35 36 #include <async.h> 36 37 #include <ipc/services.h> 37 38 #include <adt/measured_strings.h> 39 38 40 #include <net/device.h> 41 #include <net/packet.h> 39 42 40 43 extern int netif_get_addr_req_remote(int, device_id_t, measured_string_ref *, -
uspace/lib/net/netif/netif_local.c
r4a3b501 r42a9f27 27 27 */ 28 28 29 /** @addtogroup netif29 /** @addtogroup libnet 30 30 * @{ 31 31 */ … … 58 58 DEVICE_MAP_IMPLEMENT(netif_device_map, netif_device_t); 59 59 60 /** Network interface global data. 61 */ 60 /** Network interface global data. */ 62 61 netif_globals_t netif_globals; 63 62 … … 65 64 * 66 65 * @param[in] netif_phone The network interface phone. 67 * @param[in] device_id 68 * @param[in] irq 69 * @param[in] io 70 * 71 * @return EOK on success.72 * @return Other errro codes as defined for thenetif_probe_message().73 * 74 */ 75 intnetif_probe_req_local(int netif_phone, device_id_t device_id, int irq, int io)66 * @param[in] device_id The device identifier. 67 * @param[in] irq The device interrupt number. 68 * @param[in] io The device input/output address. 69 * @return EOK on success. 70 * @return Other error codes as defined for the 71 * netif_probe_message(). 72 */ 73 int 74 netif_probe_req_local(int netif_phone, device_id_t device_id, int irq, int io) 76 75 { 77 76 fibril_rwlock_write_lock(&netif_globals.lock); … … 85 84 * 86 85 * @param[in] netif_phone The network interface phone. 87 * @param[in] device_id The device identifier. 88 * @param[in] packet The packet queue. 89 * @param[in] sender The sending module service. 90 * 91 * @return EOK on success. 92 * @return Other error codes as defined for the generic_send_msg() function. 93 * 86 * @param[in] device_id The device identifier. 87 * @param[in] packet The packet queue. 88 * @param[in] sender The sending module service. 89 * @return EOK on success. 90 * @return Other error codes as defined for the generic_send_msg() 91 * function. 94 92 */ 95 93 int netif_send_msg_local(int netif_phone, device_id_t device_id, … … 106 104 * 107 105 * @param[in] netif_phone The network interface phone. 108 * @param[in] device_id 109 * 110 * @return EOK on success.111 * @return Other error codes as defined for the find_device()function.112 * @return Other error codes as defined for the netif_start_message() function.113 * 106 * @param[in] device_id The device identifier. 107 * @return EOK on success. 108 * @return Other error codes as defined for the find_device() 109 * function. 110 * @return Other error codes as defined for the 111 * netif_start_message() function. 114 112 */ 115 113 int netif_start_req_local(int netif_phone, device_id_t device_id) … … 141 139 * 142 140 * @param[in] netif_phone The network interface phone. 143 * @param[in] device_id 144 * 145 * @return EOK on success.146 * @return Other error codes as defined for the find_device()function.147 * @return Other error codes as defined for the netif_stop_message() function.148 * 141 * @param[in] device_id The device identifier. 142 * @return EOK on success. 143 * @return Other error codes as defined for the find_device() 144 * function. 145 * @return Other error codes as defined for the 146 * netif_stop_message() function. 149 147 */ 150 148 int netif_stop_req_local(int netif_phone, device_id_t device_id) … … 175 173 /** Return the device usage statistics. 176 174 * 177 * @param[in] netif_phone The network interface phone. 178 * @param[in] device_id The device identifier. 179 * @param[out] stats The device usage statistics. 180 * 175 * @param[in] netif_phone The network interface phone. 176 * @param[in] device_id The device identifier. 177 * @param[out] stats The device usage statistics. 181 178 * @return EOK on success. 182 *183 179 */ 184 180 int netif_stats_req_local(int netif_phone, device_id_t device_id, … … 194 190 /** Return the device local hardware address. 195 191 * 196 * @param[in] netif_phone The network interface phone. 197 * @param[in] device_id The device identifier. 198 * @param[out] address The device local hardware address. 199 * @param[out] data The address data. 200 * 201 * @return EOK on success. 202 * @return EBADMEM if the address parameter is NULL. 203 * @return ENOENT if there no such device. 204 * @return Other error codes as defined for the netif_get_addr_message() 205 * function. 206 * 192 * @param[in] netif_phone The network interface phone. 193 * @param[in] device_id The device identifier. 194 * @param[out] address The device local hardware address. 195 * @param[out] data The address data. 196 * @return EOK on success. 197 * @return EBADMEM if the address parameter is NULL. 198 * @return ENOENT if there no such device. 199 * @return Other error codes as defined for the 200 * netif_get_addr_message() function. 207 201 */ 208 202 int netif_get_addr_req_local(int netif_phone, device_id_t device_id, … … 211 205 ERROR_DECLARE; 212 206 213 if ( (!address) || (!data))207 if (!address || !data) 214 208 return EBADMEM; 215 209 … … 231 225 /** Find the device specific data. 232 226 * 233 * @param[in] device_id The device identifier. 234 * @param[out] device The device specific data. 235 * 236 * @return EOK on success. 237 * @return ENOENT if device is not found. 238 * @return EPERM if the device is not initialized. 239 * 227 * @param[in] device_id The device identifier. 228 * @param[out] device The device specific data. 229 * @return EOK on success. 230 * @return ENOENT if device is not found. 231 * @return EPERM if the device is not initialized. 240 232 */ 241 233 int find_device(device_id_t device_id, netif_device_t **device) … … 256 248 /** Clear the usage statistics. 257 249 * 258 * @param[in] stats The usage statistics. 259 * 250 * @param[in] stats The usage statistics. 260 251 */ 261 252 void null_device_stats(device_stats_ref stats) … … 266 257 /** Initialize the netif module. 267 258 * 268 * @param[in] client_connection The client connection functio to be 269 * registered. 270 * 271 * @return EOK on success. 272 * @return Other error codes as defined for each specific module 273 * message function. 274 * 259 * @param[in] client_connection The client connection functio to be registered. 260 * @return EOK on success. 261 * @return Other error codes as defined for each specific module 262 * message function. 275 263 */ 276 264 int netif_init_module(async_client_conn_t client_connection) … … 298 286 * Prepared for future optimization. 299 287 * 300 * @param[in] packet_id The packet identifier. 301 * 288 * @param[in] packet_id The packet identifier. 302 289 */ 303 290 void netif_pq_release(packet_id_t packet_id) … … 308 295 /** Allocate new packet to handle the given content size. 309 296 * 310 * @param[in] content The minimum content size. 311 * 312 * @return The allocated packet. 313 * @return NULL if there is an error. 297 * @param[in] content The minimum content size. 298 * @return The allocated packet. 299 * @return NULL if there is an error. 314 300 * 315 301 */ … … 319 305 } 320 306 321 /** Register the device notification receiver, the network interface layer module. 322 * 323 * @param[in] name Module name. 324 * @param[in] device_id The device identifier. 325 * @param[in] phone The network interface layer module phone. 326 * 327 * @return EOK on success. 328 * @return ENOENT if there is no such device. 329 * @return ELIMIT if there is another module registered. 330 * 307 /** Register the device notification receiver, the network interface layer 308 * module. 309 * 310 * @param[in] name Module name. 311 * @param[in] device_id The device identifier. 312 * @param[in] phone The network interface layer module phone. 313 * @return EOK on success. 314 * @return ENOENT if there is no such device. 315 * @return ELIMIT if there is another module registered. 331 316 */ 332 317 static int register_message(const char *name, device_id_t device_id, int phone) … … 347 332 /** Process the netif module messages. 348 333 * 349 * @param[in] nameModule name.350 * @param[in] callidThe message identifier.351 * @param[in] callThe message parameters.352 * @param[out] answer 353 * @param[out] answer_count The last parameter for the actual answer 354 * in theanswer parameter.355 * 356 * @return EOK on success.357 * @return ENOTSUP if the message is not known.358 * @return Other error codes as defined for each specific modulemessage function.334 * @param[in] name Module name. 335 * @param[in] callid The message identifier. 336 * @param[in] call The message parameters. 337 * @param[out] answer The message answer parameters. 338 * @param[out] answer_count The last parameter for the actual answer in the 339 * answer parameter. 340 * @return EOK on success. 341 * @return ENOTSUP if the message is not known. 342 * @return Other error codes as defined for each specific module 343 * message function. 359 344 * 360 345 * @see IS_NET_NETIF_MESSAGE() … … 373 358 *answer_count = 0; 374 359 switch (IPC_GET_METHOD(*call)) { 375 case IPC_M_PHONE_HUNGUP: 376 return EOK; 377 case NET_NETIF_PROBE: 378 return netif_probe_req_local(0, IPC_GET_DEVICE(call), 379 NETIF_GET_IRQ(call), NETIF_GET_IO(call)); 380 case IPC_M_CONNECT_TO_ME: 381 fibril_rwlock_write_lock(&netif_globals.lock); 382 ERROR_CODE = register_message(name, IPC_GET_DEVICE(call), 383 IPC_GET_PHONE(call)); 384 fibril_rwlock_write_unlock(&netif_globals.lock); 385 return ERROR_CODE; 386 case NET_NETIF_SEND: 387 ERROR_PROPAGATE(packet_translate_remote(netif_globals.net_phone, 388 &packet, IPC_GET_PACKET(call))); 389 return netif_send_msg_local(0, IPC_GET_DEVICE(call), packet, 390 IPC_GET_SENDER(call)); 391 case NET_NETIF_START: 392 return netif_start_req_local(0, IPC_GET_DEVICE(call)); 393 case NET_NETIF_STATS: 394 fibril_rwlock_read_lock(&netif_globals.lock); 395 if (!ERROR_OCCURRED(async_data_read_receive(&callid, &length))) { 396 if (length < sizeof(device_stats_t)) 397 ERROR_CODE = EOVERFLOW; 398 else { 399 if (!ERROR_OCCURRED(netif_get_device_stats( 400 IPC_GET_DEVICE(call), &stats))) 401 ERROR_CODE = async_data_read_finalize(callid, &stats, 402 sizeof(device_stats_t)); 403 } 404 } 360 case IPC_M_PHONE_HUNGUP: 361 return EOK; 362 363 case NET_NETIF_PROBE: 364 return netif_probe_req_local(0, IPC_GET_DEVICE(call), 365 NETIF_GET_IRQ(call), NETIF_GET_IO(call)); 366 367 case IPC_M_CONNECT_TO_ME: 368 fibril_rwlock_write_lock(&netif_globals.lock); 369 ERROR_CODE = register_message(name, IPC_GET_DEVICE(call), 370 IPC_GET_PHONE(call)); 371 fibril_rwlock_write_unlock(&netif_globals.lock); 372 return ERROR_CODE; 373 374 case NET_NETIF_SEND: 375 ERROR_PROPAGATE(packet_translate_remote(netif_globals.net_phone, 376 &packet, IPC_GET_PACKET(call))); 377 return netif_send_msg_local(0, IPC_GET_DEVICE(call), packet, 378 IPC_GET_SENDER(call)); 379 380 case NET_NETIF_START: 381 return netif_start_req_local(0, IPC_GET_DEVICE(call)); 382 383 case NET_NETIF_STATS: 384 fibril_rwlock_read_lock(&netif_globals.lock); 385 386 if (ERROR_OCCURRED(async_data_read_receive(&callid, &length))) { 405 387 fibril_rwlock_read_unlock(&netif_globals.lock); 406 388 return ERROR_CODE; 407 case NET_NETIF_STOP: 408 return netif_stop_req_local(0, IPC_GET_DEVICE(call)); 409 case NET_NETIF_GET_ADDR: 410 fibril_rwlock_read_lock(&netif_globals.lock); 411 if (!ERROR_OCCURRED(netif_get_addr_message(IPC_GET_DEVICE(call), 412 &address))) 413 ERROR_CODE = measured_strings_reply(&address, 1); 389 } 390 if (length < sizeof(device_stats_t)) { 414 391 fibril_rwlock_read_unlock(&netif_globals.lock); 415 return ERROR_CODE; 392 return EOVERFLOW; 393 } 394 395 if (ERROR_NONE(netif_get_device_stats(IPC_GET_DEVICE(call), 396 &stats))) { 397 ERROR_CODE = async_data_read_finalize(callid, &stats, 398 sizeof(device_stats_t)); 399 } 400 401 fibril_rwlock_read_unlock(&netif_globals.lock); 402 return ERROR_CODE; 403 404 case NET_NETIF_STOP: 405 return netif_stop_req_local(0, IPC_GET_DEVICE(call)); 406 407 case NET_NETIF_GET_ADDR: 408 fibril_rwlock_read_lock(&netif_globals.lock); 409 if (ERROR_NONE(netif_get_addr_message(IPC_GET_DEVICE(call), 410 &address))) 411 ERROR_CODE = measured_strings_reply(&address, 1); 412 fibril_rwlock_read_unlock(&netif_globals.lock); 413 return ERROR_CODE; 416 414 } 417 415 … … 421 419 /** Start the network interface module. 422 420 * 423 * Initialize the client connection serving function, initialize 424 * the module, registers the module service and start the async 425 * manager, processing IPC messages in an infinite loop. 426 * 427 * @param[in] client_connection The client connection processing 428 * function. The module skeleton propagates 429 * its own one. 430 * 431 * @return EOK on success. 432 * @return Other error codes as defined for each specific module message 433 * function. 434 * 421 * Initialize the client connection serving function, initialize the module, 422 * registers the module service and start the async manager, processing IPC 423 * messages in an infinite loop. 424 * 425 * @param[in] client_connection The client connection processing function. 426 * The module skeleton propagates its own one. 427 * @return EOK on success. 428 * @return Other error codes as defined for each specific module 429 * message function. 435 430 */ 436 431 int netif_module_start_standalone(async_client_conn_t client_connection) -
uspace/lib/net/netif/netif_remote.c
r4a3b501 r42a9f27 27 27 */ 28 28 29 /** @addtogroup netif29 /** @addtogroup libnet 30 30 * @{ 31 31 */ … … 35 35 */ 36 36 37 #include <netif_remote.h> 38 #include <packet_client.h> 39 #include <generic.h> 40 37 41 #include <ipc/services.h> 38 42 #include <ipc/netif.h> … … 41 45 #include <adt/measured_strings.h> 42 46 #include <net/packet.h> 43 #include <packet_client.h>44 47 #include <net/device.h> 45 #include <netif_remote.h>46 #include <generic.h>47 48 49 /** Return the device local hardware address. 50 * 51 * @param[in] netif_phone The network interface phone. 52 * @param[in] device_id The device identifier. 53 * @param[out] address The device local hardware address. 54 * @param[out] data The address data. 55 * @return EOK on success. 56 * @return EBADMEM if the address parameter is NULL. 57 * @return ENOENT if there no such device. 58 * @return Other error codes as defined for the 59 * netif_get_addr_message() function. 60 */ 48 61 int netif_get_addr_req_remote(int netif_phone, device_id_t device_id, 49 62 measured_string_ref *address, char **data) … … 53 66 } 54 67 55 int netif_probe_req_remote(int netif_phone, device_id_t device_id, int irq, int io) 68 /** Probe the existence of the device. 69 * 70 * @param[in] netif_phone The network interface phone. 71 * @param[in] device_id The device identifier. 72 * @param[in] irq The device interrupt number. 73 * @param[in] io The device input/output address. 74 * @return EOK on success. 75 * @return Other error codes as defined for the 76 * netif_probe_message(). 77 */ 78 int 79 netif_probe_req_remote(int netif_phone, device_id_t device_id, int irq, int io) 56 80 { 57 81 return async_req_3_0(netif_phone, NET_NETIF_PROBE, device_id, irq, io); 58 82 } 59 83 60 int netif_send_msg_remote(int netif_phone, device_id_t device_id, packet_t packet, 84 /** Send the packet queue. 85 * 86 * @param[in] netif_phone The network interface phone. 87 * @param[in] device_id The device identifier. 88 * @param[in] packet The packet queue. 89 * @param[in] sender The sending module service. 90 * @return EOK on success. 91 * @return Other error codes as defined for the generic_send_msg() 92 * function. 93 */ 94 int 95 netif_send_msg_remote(int netif_phone, device_id_t device_id, packet_t packet, 61 96 services_t sender) 62 97 { … … 65 100 } 66 101 102 /** Start the device. 103 * 104 * @param[in] netif_phone The network interface phone. 105 * @param[in] device_id The device identifier. 106 * @return EOK on success. 107 * @return Other error codes as defined for the find_device() 108 * function. 109 * @return Other error codes as defined for the 110 * netif_start_message() function. 111 */ 67 112 int netif_start_req_remote(int netif_phone, device_id_t device_id) 68 113 { … … 70 115 } 71 116 117 /** Stop the device. 118 * 119 * @param[in] netif_phone The network interface phone. 120 * @param[in] device_id The device identifier. 121 * @return EOK on success. 122 * @return Other error codes as defined for the find_device() 123 * function. 124 * @return Other error codes as defined for the 125 * netif_stop_message() function. 126 */ 72 127 int netif_stop_req_remote(int netif_phone, device_id_t device_id) 73 128 { … … 75 130 } 76 131 132 /** Return the device usage statistics. 133 * 134 * @param[in] netif_phone The network interface phone. 135 * @param[in] device_id The device identifier. 136 * @param[out] stats The device usage statistics. 137 * @return EOK on success. 138 */ 77 139 int netif_stats_req_remote(int netif_phone, device_id_t device_id, 78 140 device_stats_ref stats) … … 99 161 * @param[in] receiver The message receiver. 100 162 * 101 * @return 102 * @return 103 * @return Other error codes as defined for the bind_service() function.104 * 163 * @return The phone of the needed service. 164 * @return EOK on success. 165 * @return Other error codes as defined for the bind_service() 166 * function. 105 167 */ 106 int netif_bind_service_remote(services_t service, device_id_t device_id, services_t me, 107 async_client_conn_t receiver) 168 int 169 netif_bind_service_remote(services_t service, device_id_t device_id, 170 services_t me, async_client_conn_t receiver) 108 171 { 109 172 return bind_service(service, device_id, me, 0, receiver);
Note:
See TracChangeset
for help on using the changeset viewer.