Changes in uspace/lib/drv/generic/driver.c [8300c72:fafb8e5] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/driver.c
r8300c72 rfafb8e5 1 1 /* 2 * Copyright (c) 2025 Jiri Svoboda3 2 * Copyright (c) 2010 Lenka Trochtova 3 * Copyright (c) 2011 Jiri Svoboda 4 4 * All rights reserved. 5 5 * … … 237 237 } 238 238 239 static void driver_dev_quiesce(ipc_call_t *icall)240 {241 devman_handle_t devh = ipc_get_arg1(icall);242 ddf_fun_t *fun;243 link_t *link;244 245 fibril_mutex_lock(&devices_mutex);246 ddf_dev_t *dev = driver_get_device(devh);247 if (dev != NULL)248 dev_add_ref(dev);249 fibril_mutex_unlock(&devices_mutex);250 251 if (dev == NULL) {252 async_answer_0(icall, ENOENT);253 return;254 }255 256 errno_t rc;257 258 if (driver->driver_ops->dev_quiesce != NULL) {259 rc = driver->driver_ops->dev_quiesce(dev);260 } else {261 /*262 * If the driver does not implement quiesce, we will263 * simply request all subordinate functions to quiesce.264 */265 fibril_mutex_lock(&functions_mutex);266 link = list_first(&functions);267 while (link != NULL) {268 fun = list_get_instance(link, ddf_fun_t, link);269 if (fun->dev == dev)270 ddf_fun_quiesce(fun);271 link = list_next(link, &functions);272 }273 fibril_mutex_unlock(&functions_mutex);274 rc = EOK;275 }276 277 dev_del_ref(dev);278 async_answer_0(icall, rc);279 }280 281 239 static void driver_fun_online(ipc_call_t *icall) 282 240 { … … 399 357 case DRIVER_DEV_GONE: 400 358 driver_dev_gone(&call); 401 break;402 case DRIVER_DEV_QUIESCE:403 driver_dev_quiesce(&call);404 359 break; 405 360 case DRIVER_FUN_ONLINE: … … 948 903 } 949 904 950 /** Quiesce function.951 *952 * @param fun Function to quiesce953 *954 * @return EOK on success or an error code955 *956 */957 errno_t ddf_fun_quiesce(ddf_fun_t *fun)958 {959 assert(fun->bound == true);960 961 errno_t res = devman_drv_fun_quiesce(fun->handle);962 if (res != EOK)963 return res;964 965 return EOK;966 }967 968 905 /** Add single match ID to inner function. 969 906 * … … 1032 969 1033 970 return devman_add_device_to_category(fun->handle, cat_name); 1034 }1035 1036 /** Wait for function to enter stable state.1037 *1038 * @param fun Function1039 * @return EOK on success or an error code1040 */1041 errno_t ddf_fun_wait_stable(ddf_fun_t *fun)1042 {1043 return devman_drv_fun_wait_stable(fun->handle);1044 971 } 1045 972
Note:
See TracChangeset
for help on using the changeset viewer.