Changeset 7964475 in mainline for uspace/lib
- Timestamp:
- 2010-12-10T15:08:26Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c01255c
- Parents:
- b5ec347 (diff), cdc1aa1 (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
- Files:
-
- 6 added
- 15 edited
-
c/generic/adt/char_map.c (modified) (4 diffs)
-
c/generic/devman.c (modified) (1 diff)
-
c/include/adt/generic_field.h (modified) (2 diffs)
-
c/include/errno.h (modified) (1 diff)
-
c/include/ipc/dev_iface.h (modified) (1 diff)
-
c/include/ipc/vfs.h (modified) (2 diffs)
-
drv/generic/driver.c (modified) (1 diff)
-
drv/generic/remote_usbhc.c (modified) (8 diffs)
-
drv/include/driver.h (modified) (1 diff)
-
usb/Makefile (modified) (2 diffs)
-
usb/include/usb/debug.h (added)
-
usb/include/usb/devreq.h (modified) (2 diffs)
-
usb/include/usb/hcd.h (added)
-
usb/include/usb/usb.h (modified) (1 diff)
-
usb/include/usb/usbdrv.h (modified) (4 diffs)
-
usb/src/addrkeep.c (added)
-
usb/src/debug.c (added)
-
usb/src/drvpsync.c (added)
-
usb/src/usbdrv.c (modified) (1 diff)
-
usb/src/usbdrvreq.c (added)
-
usbvirt/main.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/adt/char_map.c
rb5ec347 r7964475 90 90 } 91 91 92 map->items[map->next]->c = * identifier;93 ++ identifier;94 ++ map->next;95 if ((length > 1) || ((length == 0) && (*identifier))) {92 map->items[map->next]->c = *identifier; 93 identifier++; 94 map->next++; 95 if ((length > 1) || ((length == 0) && *identifier)) { 96 96 map->items[map->next - 1]->value = CHAR_MAP_NULL; 97 97 return char_map_add_item(map->items[map->next - 1], identifier, … … 142 142 const int value) 143 143 { 144 if (char_map_is_valid(map) && (identifier) && 145 ((length) || (*identifier))) { 144 if (char_map_is_valid(map) && identifier && (length || *identifier)) { 146 145 int index; 147 146 148 for (index = 0; index < map->next; ++ index) {147 for (index = 0; index < map->next; index++) { 149 148 if (map->items[index]->c != *identifier) 150 149 continue; 151 150 152 ++ identifier;153 if((length > 1) || ((length == 0) && (*identifier))) {151 identifier++; 152 if((length > 1) || ((length == 0) && *identifier)) { 154 153 return char_map_add(map->items[index], 155 154 identifier, length ? length - 1 : 0, value); … … 178 177 179 178 map->magic = 0; 180 for (index = 0; index < map->next; ++index)179 for (index = 0; index < map->next; index++) 181 180 char_map_destroy(map->items[index]); 182 181 … … 207 206 return NULL; 208 207 209 if (length || (*identifier)) {208 if (length || *identifier) { 210 209 int index; 211 210 212 for (index = 0; index < map->next; ++index) {211 for (index = 0; index < map->next; index++) { 213 212 if (map->items[index]->c == *identifier) { 214 ++identifier;213 identifier++; 215 214 if (length == 1) 216 215 return map->items[index]; -
uspace/lib/c/generic/devman.c
rb5ec347 r7964475 116 116 { 117 117 ipc_call_t answer; 118 a sync_send_1(phone, DEVMAN_ADD_MATCH_ID, match_id->score, &answer);118 aid_t req = async_send_1(phone, DEVMAN_ADD_MATCH_ID, match_id->score, &answer); 119 119 int retval = async_data_write_start(phone, match_id->id, str_size(match_id->id)); 120 return retval; 120 async_wait_for(req, NULL); 121 return retval; 121 122 } 122 123 -
uspace/lib/c/include/adt/generic_field.h
rb5ec347 r7964475 91 91 } \ 92 92 field->items[field->next] = value; \ 93 ++field->next; \93 field->next++; \ 94 94 field->items[field->next] = NULL; \ 95 95 return field->next - 1; \ … … 108 108 int index; \ 109 109 field->magic = 0; \ 110 for (index = 0; index < field->next; ++ index) { \110 for (index = 0; index < field->next; index++) { \ 111 111 if (field->items[index]) \ 112 112 free(field->items[index]); \ -
uspace/lib/c/include/errno.h
rb5ec347 r7964475 83 83 #define ENOTCONN (-10057) 84 84 85 /** The requested operation was not performed. 86 * Try again later. 87 */ 88 #define TRY_AGAIN (-11002) 85 /** The requested operation was not performed. Try again later. */ 86 #define EAGAIN (-11002) 89 87 90 88 /** No data. -
uspace/lib/c/include/ipc/dev_iface.h
rb5ec347 r7964475 54 54 DEV_IFACE_ID(DEV_FIRST_CUSTOM_METHOD_IDX) 55 55 56 /* 57 * The first argument is actually method (as the "real" method is used 58 * for indexing into interfaces. 59 */ 60 61 #define DEV_IPC_GET_ARG1(call) IPC_GET_ARG2((call)) 62 #define DEV_IPC_GET_ARG2(call) IPC_GET_ARG3((call)) 63 #define DEV_IPC_GET_ARG3(call) IPC_GET_ARG4((call)) 64 #define DEV_IPC_GET_ARG4(call) IPC_GET_ARG5((call)) 65 56 66 57 67 #endif -
uspace/lib/c/include/ipc/vfs.h
rb5ec347 r7964475 36 36 #define LIBC_IPC_VFS_H_ 37 37 38 #include <ipc/ipc.h> 38 39 #include <sys/types.h> 39 #include < ipc/ipc.h>40 #include <bool.h> 40 41 41 42 #define FS_NAME_MAXLEN 20 … … 55 56 /** Unique identifier of the fs. */ 56 57 char name[FS_NAME_MAXLEN + 1]; 58 bool concurrent_read_write; 59 bool write_retains_size; 57 60 } vfs_info_t; 58 61 -
uspace/lib/drv/generic/driver.c
rb5ec347 r7964475 381 381 } 382 382 383 /** Wrapper for child_device_register for devices with single match id. 384 * 385 * @param parent Parent device. 386 * @param child_name Child device name. 387 * @param child_match_id Child device match id. 388 * @param child_match_score Child device match score. 389 * @return Error code. 390 */ 391 int child_device_register_wrapper(device_t *parent, const char *child_name, 392 const char *child_match_id, int child_match_score) 393 { 394 device_t *child = NULL; 395 match_id_t *match_id = NULL; 396 int rc; 397 398 child = create_device(); 399 if (child == NULL) { 400 rc = ENOMEM; 401 goto failure; 402 } 403 404 child->name = child_name; 405 406 match_id = create_match_id(); 407 if (match_id == NULL) { 408 rc = ENOMEM; 409 goto failure; 410 } 411 412 match_id->id = child_match_id; 413 match_id->score = child_match_score; 414 add_match_id(&child->match_ids, match_id); 415 416 rc = child_device_register(child, parent); 417 if (EOK != rc) 418 goto failure; 419 420 return EOK; 421 422 failure: 423 if (match_id != NULL) { 424 match_id->id = NULL; 425 delete_match_id(match_id); 426 } 427 428 if (child != NULL) { 429 child->name = NULL; 430 delete_device(child); 431 } 432 433 return rc; 434 } 435 383 436 int driver_main(driver_t *drv) 384 437 { -
uspace/lib/drv/generic/remote_usbhc.c
rb5ec347 r7964475 108 108 } 109 109 110 devman_handle_t handle = IPC_GET_ARG1(*call);110 devman_handle_t handle = DEV_IPC_GET_ARG1(*call); 111 111 112 112 usb_address_t address; … … 122 122 ipc_callid_t callid, ipc_call_t *call) 123 123 { 124 ipcarg_t buffer_hash = IPC_GET_ARG1(*call);124 ipcarg_t buffer_hash = DEV_IPC_GET_ARG1(*call); 125 125 async_transaction_t * trans = (async_transaction_t *)buffer_hash; 126 126 if (trans == NULL) { … … 144 144 accepted_size = trans->size; 145 145 } 146 async_data_read_finalize(c allid, trans->buffer, accepted_size);146 async_data_read_finalize(cid, trans->buffer, accepted_size); 147 147 148 148 ipc_answer_1(callid, EOK, accepted_size); … … 211 211 } 212 212 213 usb_address_t address = (usb_address_t) IPC_GET_ARG1(*call);214 devman_handle_t handle = (devman_handle_t) IPC_GET_ARG2(*call);213 usb_address_t address = (usb_address_t) DEV_IPC_GET_ARG1(*call); 214 devman_handle_t handle = (devman_handle_t) DEV_IPC_GET_ARG2(*call); 215 215 216 216 int rc = usb_iface->bind_address(device, address, handle); … … 229 229 } 230 230 231 usb_address_t address = (usb_address_t) IPC_GET_ARG1(*call);231 usb_address_t address = (usb_address_t) DEV_IPC_GET_ARG1(*call); 232 232 233 233 int rc = usb_iface->release_address(device, address); … … 275 275 } 276 276 277 size_t expected_len = IPC_GET_ARG3(*call);277 size_t expected_len = DEV_IPC_GET_ARG3(*call); 278 278 usb_target_t target = { 279 .address = IPC_GET_ARG1(*call),280 .endpoint = IPC_GET_ARG2(*call)279 .address = DEV_IPC_GET_ARG1(*call), 280 .endpoint = DEV_IPC_GET_ARG2(*call) 281 281 }; 282 282 … … 327 327 } 328 328 329 size_t len = IPC_GET_ARG3(*call);329 size_t len = DEV_IPC_GET_ARG3(*call); 330 330 usb_target_t target = { 331 .address = IPC_GET_ARG1(*call),332 .endpoint = IPC_GET_ARG2(*call)331 .address = DEV_IPC_GET_ARG1(*call), 332 .endpoint = DEV_IPC_GET_ARG2(*call) 333 333 }; 334 334 … … 384 384 385 385 usb_target_t target = { 386 .address = IPC_GET_ARG1(*call),387 .endpoint = IPC_GET_ARG2(*call)386 .address = DEV_IPC_GET_ARG1(*call), 387 .endpoint = DEV_IPC_GET_ARG2(*call) 388 388 }; 389 389 -
uspace/lib/drv/include/driver.h
rb5ec347 r7964475 199 199 200 200 int child_device_register(device_t *, device_t *); 201 int child_device_register_wrapper(device_t *, const char *, const char *, int); 201 202 202 203 -
uspace/lib/usb/Makefile
rb5ec347 r7964475 33 33 34 34 SOURCES = \ 35 src/addrkeep.c \ 36 src/debug.c \ 37 src/drvpsync.c \ 35 38 src/hcdhubd.c \ 36 39 src/hcdrv.c \ … … 38 41 src/remotedrv.c \ 39 42 src/usb.c \ 43 src/usbdrvreq.c \ 40 44 src/usbdrv.c 41 45 -
uspace/lib/usb/include/usb/devreq.h
rb5ec347 r7964475 38 38 #include <ipc/ipc.h> 39 39 #include <async.h> 40 #include <usb/usb.h> 41 #include <usb/descriptor.h> 40 42 41 43 /** Standard device request. */ … … 83 85 } __attribute__ ((packed)) usb_device_request_setup_packet_t; 84 86 87 int usb_drv_req_set_address(int, usb_address_t, usb_address_t); 88 int usb_drv_req_get_device_descriptor(int, usb_address_t, 89 usb_standard_device_descriptor_t *); 90 int usb_drv_req_get_bare_configuration_descriptor(int, usb_address_t, int, 91 usb_standard_configuration_descriptor_t *); 92 int usb_drv_req_get_full_configuration_descriptor(int, usb_address_t, int, 93 void *, size_t, size_t *); 94 95 85 96 #endif 86 97 /** -
uspace/lib/usb/include/usb/usb.h
rb5ec347 r7964475 69 69 typedef int usb_address_t; 70 70 71 /** Default USB address. */ 72 #define USB_ADDRESS_DEFAULT 0 73 /** Maximum address number in USB 1.1. */ 74 #define USB11_ADDRESS_MAX 128 75 71 76 /** USB endpoint number type. 72 77 * Negative values could be used to indicate error. -
uspace/lib/usb/include/usb/usbdrv.h
rb5ec347 r7964475 36 36 #define LIBUSB_USBDRV_H_ 37 37 38 #include "usb.h"38 #include <usb/usb.h> 39 39 #include <driver.h> 40 #include <usb/devreq.h> 41 #include <usb/descriptor.h> 40 42 41 43 int usb_drv_hc_connect(device_t *, unsigned int); … … 54 56 void *, size_t, size_t *, usb_handle_t *); 55 57 58 int usb_drv_psync_interrupt_out(int, usb_target_t, void *, size_t); 59 int usb_drv_psync_interrupt_in(int, usb_target_t, void *, size_t, size_t *); 60 61 62 56 63 int usb_drv_async_control_write_setup(int, usb_target_t, 57 64 void *, size_t, usb_handle_t *); … … 60 67 int usb_drv_async_control_write_status(int, usb_target_t, 61 68 usb_handle_t *); 69 70 int usb_drv_psync_control_write_setup(int, usb_target_t, void *, size_t); 71 int usb_drv_psync_control_write_data(int, usb_target_t, void *, size_t); 72 int usb_drv_psync_control_write_status(int, usb_target_t); 73 74 int usb_drv_psync_control_write(int, usb_target_t, 75 void *, size_t, void *, size_t); 76 62 77 63 78 int usb_drv_async_control_read_setup(int, usb_target_t, … … 68 83 usb_handle_t *); 69 84 85 int usb_drv_psync_control_read_setup(int, usb_target_t, void *, size_t); 86 int usb_drv_psync_control_read_data(int, usb_target_t, void *, size_t, size_t *); 87 int usb_drv_psync_control_read_status(int, usb_target_t); 88 89 int usb_drv_psync_control_read(int, usb_target_t, 90 void *, size_t, void *, size_t, size_t *); 91 92 93 70 94 int usb_drv_async_wait_for(usb_handle_t); 95 71 96 72 97 #endif -
uspace/lib/usb/src/usbdrv.c
rb5ec347 r7964475 71 71 devman_handle_t handle; 72 72 73 rc = devman_device_get_handle("/v hc", &handle, 0);73 rc = devman_device_get_handle("/virt/usbhc", &handle, 0); 74 74 if (rc != EOK) { 75 75 return rc; -
uspace/lib/usbvirt/main.c
rb5ec347 r7964475 183 183 } 184 184 185 /** Create necessary phones for com unication with virtual HCD.185 /** Create necessary phones for communication with virtual HCD. 186 186 * This function wraps following calls: 187 * -# open <code>/dev/devices/\\v hc for reading187 * -# open <code>/dev/devices/\\virt\\usbhc for reading 188 188 * -# access phone of file opened in previous step 189 189 * -# create callback through just opened phone … … 193 193 * @warning This function is wrapper for several actions and therefore 194 194 * it is not possible - in case of error - to determine at which point 195 * error occured. 196 * 197 * @param hcd_path HCD identification under devfs 198 * (without <code>/dev/usb/</code>). 195 * error occurred. 196 * 199 197 * @param dev Device to connect. 200 198 * @return EOK on success or error code from errno.h. … … 207 205 } 208 206 209 const char *vhc_path = "/v hc";207 const char *vhc_path = "/virt/usbhc"; 210 208 int rc; 211 209 devman_handle_t handle;
Note:
See TracChangeset
for help on using the changeset viewer.
