Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2598 → Rev 2597

/trunk/uspace/srv/devmap/devmap.c
154,9 → 154,9
return device;
}
 
/**
* Unregister device and free it. It's assumed that driver's device list is
* already locked.
/** Unregister device and free it. Its assumed that driver's device list
* is already locked.
*
*/
static int devmap_device_unregister_core(devmap_device_t *device)
{
171,9 → 171,7
return EOK;
}
 
/**
* Read info about new driver and add it into linked list of registered
* drivers.
/** Read info about new driver and add it into linked list of registered drivers.
*/
static void devmap_driver_register(devmap_driver_t **odriver)
{
193,8 → 191,7
return;
}
 
if (NULL ==
(driver = (devmap_driver_t *)malloc(sizeof(devmap_driver_t)))) {
if (NULL == (driver = (devmap_driver_t *)malloc(sizeof(devmap_driver_t)))) {
ipc_answer_fast(iid, ENOMEM, 0, 0);
return;
}
211,8 → 208,7
}
 
if (name_size > DEVMAP_NAME_MAXLEN) {
printf("Too logn name: %u: maximum is %u.\n", name_size,
DEVMAP_NAME_MAXLEN);
printf("Too logn name: %u: maximum is %u.\n", name_size, DEVMAP_NAME_MAXLEN);
free(driver);
ipc_answer_fast(callid, EINVAL, 0, 0);
ipc_answer_fast(iid, EREFUSED, 0, 0);
246,7 → 242,7
printf("Read driver name: '%s'.\n", driver->name);
 
/* Initialize futex for list of devices owned by this driver */
futex_initialize(&(driver->devices_futex), 1);
futex_initialize(&(driver->devices_futex) ,1);
 
/*
* Initialize list of asociated devices
259,8 → 255,8
callid = async_get_call(&call);
 
if (IPC_M_CONNECT_TO_ME != IPC_GET_METHOD(call)) {
printf("DevMap: Unexpected method: %u.\n",
IPC_GET_METHOD(call));
printf("DevMap: Unexpected method: %u.\n", \
IPC_GET_METHOD(call));
ipc_answer_fast(callid, ENOTSUP, 0, 0);
free(driver->name);
277,9 → 273,7
 
futex_down(&drivers_list_futex);
/* TODO:
* check that no driver with name equal to driver->name is registered
*/
/* TODO: check that no driver with name equals to driver->name is registered */
 
/*
* Insert new driver into list of registered drivers
320,8 → 314,7
futex_down(&(driver->devices_futex));
 
while (!list_empty(&(driver->devices))) {
device = list_get_instance(driver->devices.next,
devmap_device_t, driver_devices);
device = list_get_instance(driver->devices.next, devmap_device_t, driver_devices);
printf("Unregister device '%s'.\n", device->name);
devmap_device_unregister_core(device);
}
361,8 → 354,7
}
/* Create new device entry */
if (NULL ==
(device = (devmap_device_t *)malloc(sizeof(devmap_device_t)))) {
if (NULL == (device = (devmap_device_t *)malloc(sizeof(devmap_device_t)))) {
printf("Cannot allocate new device.\n");
ipc_answer_fast(iid, ENOMEM, 0, 0);
return;
464,15 → 456,13
dev = devmap_device_find_handle(handle);
 
if (NULL == dev) {
printf("DevMap: No registered device with handle %d.\n",
handle);
printf("DevMap: No registered device with handle %d.\n", handle);
ipc_answer_fast(callid, ENOENT, 0, 0);
return;
}
 
/* FIXME: is this correct method how to pass argument on forwarding ?*/
ipc_forward_fast(callid, dev->driver->phone, (ipcarg_t)(dev->handle),
0);
/* FIXME: is this correct method how to pass argument on forwarding ?*/
ipc_forward_fast(callid, dev->driver->phone, (ipcarg_t)(dev->handle), 0);
return;
}
 
518,8 → 508,7
/*
* Send confirmation to sender and get data into buffer.
*/
if (EOK != (retval = ipc_data_deliver(callid, &call, name,
name_size))) {
if (EOK != (retval = ipc_data_deliver(callid, &call, name, name_size))) {
ipc_answer_fast(iid, EREFUSED, 0, 0);
return;
}
674,8 → 663,7
 
case DEVMAP_DEVICE_CONNECT_ME_TO:
/* Connect client to selected device */
printf("DevMap: connect to device %d.\n",
IPC_GET_ARG1(call));
printf("DevMap: connect to device %d.\n", IPC_GET_ARG1(call));
devmap_forward(callid, &call);
break;
 
706,16 → 694,16
 
/* Select interface */
switch ((ipcarg_t)(IPC_GET_ARG1(*icall))) {
case DEVMAP_DRIVER:
devmap_connection_driver(iid, icall);
break;
case DEVMAP_CLIENT:
devmap_connection_client(iid, icall);
break;
default:
ipc_answer_fast(iid, ENOENT, 0, 0); /* No such interface */
printf("DevMap: Unknown interface %u.\n",
(ipcarg_t)(IPC_GET_ARG1(*icall)));
case DEVMAP_DRIVER:
devmap_connection_driver(iid, icall);
break;
case DEVMAP_CLIENT:
devmap_connection_client(iid, icall);
break;
default:
ipc_answer_fast(iid, ENOENT, 0, 0); /* No such interface */
printf("DevMap: Unknown interface %u.\n", \
(ipcarg_t)(IPC_GET_ARG1(*icall)));
}
 
/* Cleanup */
741,7 → 729,7
/* Set a handler of incomming connections */
async_set_client_connection(devmap_connection);
 
/* Register device mapper at naming service */
/* Register device mapper at naming service */
if (ipc_connect_to_me(PHONE_NS, SERVICE_DEVMAP, 0, &phonead) != 0)
return -1;