Changeset 948911d in mainline for uspace/lib/drv
- Timestamp:
- 2012-01-24T02:27:43Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 230385c
- Parents:
- 8afeb04 (diff), 2df6f6fe (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/lib/drv
- Files:
-
- 4 edited
-
generic/driver.c (modified) (3 diffs)
-
generic/remote_nic.c (modified) (2 diffs)
-
include/ddf/driver.h (modified) (1 diff)
-
include/ops/nic.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/driver.c
r8afeb04 r948911d 303 303 } 304 304 305 static void driver_dev_added(ipc_callid_t iid, ipc_call_t *icall)306 {307 fibril_mutex_lock(&devices_mutex);308 ddf_dev_t *dev = driver_get_device(IPC_GET_ARG1(*icall));309 fibril_mutex_unlock(&devices_mutex);310 311 if (dev != NULL && driver->driver_ops->device_added != NULL)312 driver->driver_ops->device_added(dev);313 }314 315 305 static void driver_dev_remove(ipc_callid_t iid, ipc_call_t *icall) 316 306 { … … 460 450 case DRIVER_DEV_ADD: 461 451 driver_dev_add(callid, &call); 462 break;463 case DRIVER_DEV_ADDED:464 async_answer_0(callid, EOK);465 driver_dev_added(callid, &call);466 452 break; 467 453 case DRIVER_DEV_REMOVE: … … 1016 1002 * incoming connections. 1017 1003 */ 1018 rc = devman_driver_register(driver->name, driver_connection); 1004 async_set_client_connection(driver_connection); 1005 rc = devman_driver_register(driver->name); 1019 1006 if (rc != EOK) { 1020 1007 printf("Error: Failed to register driver with device manager " -
uspace/lib/drv/generic/remote_nic.c
r8afeb04 r948911d 39 39 #include <errno.h> 40 40 #include <ipc/services.h> 41 #include <adt/measured_strings.h>42 41 #include <sys/time.h> 43 42 #include "ops/nic.h" 44 43 45 static void remote_nic_send_message(ddf_fun_t *dev, void *iface, 46 ipc_callid_t callid, ipc_call_t *call) 47 { 48 nic_iface_t *nic_iface = (nic_iface_t *) iface; 49 assert(nic_iface->send_message); 50 51 packet_id_t packet_id = (packet_id_t) IPC_GET_ARG2(*call); 52 53 int rc = nic_iface->send_message(dev, packet_id); 54 async_answer_0(callid, rc); 55 } 56 57 static void remote_nic_connect_to_nil(ddf_fun_t *dev, void *iface, 58 ipc_callid_t callid, ipc_call_t *call) 59 { 60 nic_iface_t *nic_iface = (nic_iface_t *) iface; 61 assert(nic_iface->connect_to_nil); 62 63 services_t nil_service = (services_t) IPC_GET_ARG2(*call); 64 nic_device_id_t device_id = (nic_device_id_t) IPC_GET_ARG3(*call); 65 66 int rc = nic_iface->connect_to_nil(dev, nil_service, device_id); 44 static void remote_nic_send_frame(ddf_fun_t *dev, void *iface, 45 ipc_callid_t callid, ipc_call_t *call) 46 { 47 nic_iface_t *nic_iface = (nic_iface_t *) iface; 48 assert(nic_iface->send_frame); 49 50 void *data; 51 size_t size; 52 int rc; 53 54 rc = async_data_write_accept(&data, false, 0, 0, 0, &size); 55 if (rc != EOK) { 56 async_answer_0(callid, EINVAL); 57 return; 58 } 59 60 rc = nic_iface->send_frame(dev, data, size); 61 async_answer_0(callid, rc); 62 free(data); 63 } 64 65 static void remote_nic_callback_create(ddf_fun_t *dev, void *iface, 66 ipc_callid_t callid, ipc_call_t *call) 67 { 68 nic_iface_t *nic_iface = (nic_iface_t *) iface; 69 assert(nic_iface->callback_create); 70 71 nic_device_id_t device_id = (nic_device_id_t) IPC_GET_ARG2(*call); 72 73 int rc = nic_iface->callback_create(dev, device_id); 67 74 async_answer_0(callid, rc); 68 75 } … … 1194 1201 */ 1195 1202 static remote_iface_func_ptr_t remote_nic_iface_ops[] = { 1196 &remote_nic_send_ message,1197 &remote_nic_c onnect_to_nil,1203 &remote_nic_send_frame, 1204 &remote_nic_callback_create, 1198 1205 &remote_nic_get_state, 1199 1206 &remote_nic_set_state, -
uspace/lib/drv/include/ddf/driver.h
r8afeb04 r948911d 145 145 /** Ask driver to offline a specific function */ 146 146 int (*fun_offline)(ddf_fun_t *); 147 148 /**149 * Notification that the device was succesfully added.150 * The driver can do any blocking operation without151 * blocking the device manager.152 *153 * XXX REMOVE THIS154 */155 void (*device_added)(ddf_dev_t *dev);156 147 } driver_ops_t; 157 148 -
uspace/lib/drv/include/ops/nic.h
r8afeb04 r948911d 37 37 #define LIBDRV_OPS_NIC_H_ 38 38 39 #include <net/packet.h>40 39 #include <ipc/services.h> 41 #include <n et/device.h>40 #include <nic/nic.h> 42 41 #include <sys/time.h> 43 42 … … 46 45 typedef struct nic_iface { 47 46 /** Mandatory methods */ 48 int (*send_ message)(ddf_fun_t *, packet_id_t);49 int (*c onnect_to_nil)(ddf_fun_t *, services_t, nic_device_id_t);47 int (*send_frame)(ddf_fun_t *, void *, size_t); 48 int (*callback_create)(ddf_fun_t *, nic_device_id_t); 50 49 int (*get_state)(ddf_fun_t *, nic_device_state_t *); 51 50 int (*set_state)(ddf_fun_t *, nic_device_state_t);
Note:
See TracChangeset
for help on using the changeset viewer.
