Changeset 16dc887 in mainline for uspace/lib/c
- Timestamp:
- 2011-08-16T14:00:32Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 278ac72, b112055
- Parents:
- 3751a08 (diff), cc574511 (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/c
- Files:
-
- 1 added
- 1 deleted
- 7 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/Makefile
r3751a08 r16dc887 64 64 generic/cap.c \ 65 65 generic/clipboard.c \ 66 generic/devmap.c \67 66 generic/devman.c \ 68 67 generic/device/hw_res.c \ … … 71 70 generic/event.c \ 72 71 generic/errno.c \ 72 generic/loc.c \ 73 73 generic/mem.c \ 74 74 generic/str.c \ -
uspace/lib/c/generic/io/io.c
r3751a08 r16dc887 45 45 #include <vfs/vfs.h> 46 46 #include <vfs/vfs_sess.h> 47 #include <ipc/ devmap.h>47 #include <ipc/loc.h> 48 48 #include <adt/list.h> 49 49 #include "../private/io.h" -
uspace/lib/c/generic/vfs/vfs.c
r3751a08 r16dc887 51 51 #include <assert.h> 52 52 #include <str.h> 53 #include < devmap.h>53 #include <loc.h> 54 54 #include <ipc/vfs.h> 55 #include <ipc/ devmap.h>55 #include <ipc/loc.h> 56 56 57 57 static FIBRIL_MUTEX_INITIALIZE(vfs_mutex); … … 142 142 } 143 143 144 int mount(const char *fs_name, const char *mp, const char *fq dn,144 int mount(const char *fs_name, const char *mp, const char *fqsn, 145 145 const char *opts, unsigned int flags) 146 146 { 147 147 int null_id = -1; 148 char null[ DEVMAP_NAME_MAXLEN];149 150 if (str_cmp(fq dn, "") == 0) {148 char null[LOC_NAME_MAXLEN]; 149 150 if (str_cmp(fqsn, "") == 0) { 151 151 /* No device specified, create a fresh 152 152 null/%d device instead */ 153 null_id = devmap_null_create();153 null_id = loc_null_create(); 154 154 155 155 if (null_id == -1) 156 156 return ENOMEM; 157 157 158 snprintf(null, DEVMAP_NAME_MAXLEN, "null/%d", null_id);159 fq dn = null;160 } 161 162 devmap_handle_t devmap_handle;163 int res = devmap_device_get_handle(fqdn, &devmap_handle, flags);158 snprintf(null, LOC_NAME_MAXLEN, "null/%d", null_id); 159 fqsn = null; 160 } 161 162 service_id_t service_id; 163 int res = loc_service_get_id(fqsn, &service_id, flags); 164 164 if (res != EOK) { 165 165 if (null_id != -1) 166 devmap_null_destroy(null_id);166 loc_null_destroy(null_id); 167 167 168 168 return res; … … 173 173 if (!mpa) { 174 174 if (null_id != -1) 175 devmap_null_destroy(null_id);175 loc_null_destroy(null_id); 176 176 177 177 return ENOMEM; … … 181 181 182 182 sysarg_t rc_orig; 183 aid_t req = async_send_2(exch, VFS_IN_MOUNT, devmap_handle, flags, NULL);183 aid_t req = async_send_2(exch, VFS_IN_MOUNT, service_id, flags, NULL); 184 184 sysarg_t rc = async_data_write_start(exch, (void *) mpa, mpa_size); 185 185 if (rc != EOK) { … … 189 189 190 190 if (null_id != -1) 191 devmap_null_destroy(null_id);191 loc_null_destroy(null_id); 192 192 193 193 if (rc_orig == EOK) … … 204 204 205 205 if (null_id != -1) 206 devmap_null_destroy(null_id);206 loc_null_destroy(null_id); 207 207 208 208 if (rc_orig == EOK) … … 219 219 220 220 if (null_id != -1) 221 devmap_null_destroy(null_id);221 loc_null_destroy(null_id); 222 222 223 223 if (rc_orig == EOK) … … 235 235 236 236 if (null_id != -1) 237 devmap_null_destroy(null_id);237 loc_null_destroy(null_id); 238 238 239 239 if (rc_orig == EOK) … … 248 248 249 249 if ((rc != EOK) && (null_id != -1)) 250 devmap_null_destroy(null_id);250 loc_null_destroy(null_id); 251 251 252 252 return (int) rc; … … 335 335 ipc_call_t answer; 336 336 aid_t req = async_send_4(exch, VFS_IN_OPEN_NODE, node->fs_handle, 337 node-> devmap_handle, node->index, oflag, &answer);337 node->service_id, node->index, oflag, &answer); 338 338 339 339 vfs_exchange_end(exch); … … 811 811 } 812 812 813 if (!stat. device) {813 if (!stat.service) { 814 814 errno = ENOENT; 815 815 return NULL; 816 816 } 817 817 818 return devmap_device_connect(mgmt, stat.device, 0);818 return loc_service_connect(mgmt, stat.service, 0); 819 819 } 820 820 … … 826 826 if (rc == EOK) { 827 827 node->fs_handle = stat.fs_handle; 828 node-> devmap_handle = stat.devmap_handle;828 node->service_id = stat.service_id; 829 829 node->index = stat.index; 830 830 } -
uspace/lib/c/include/ipc/devman.h
r3751a08 r16dc887 130 130 DEVMAN_CLIENT, 131 131 DEVMAN_CONNECT_TO_DEVICE, 132 DEVMAN_CONNECT_FROM_ DEVMAP,132 DEVMAN_CONNECT_FROM_LOC, 133 133 DEVMAN_CONNECT_TO_PARENTS_DEVICE 134 134 } devman_interface_t; -
uspace/lib/c/include/ipc/loc.h
r3751a08 r16dc887 1 1 /* 2 2 * Copyright (c) 2007 Josef Cejka 3 * Copyright (c) 2011 Jiri Svoboda 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 29 /** @addtogroup devmap30 /** @addtogroup loc 30 31 * @{ 31 32 */ 32 33 33 #ifndef LIBC_IPC_ DEVMAP_H_34 #define LIBC_IPC_ DEVMAP_H_34 #ifndef LIBC_IPC_LOC_H_ 35 #define LIBC_IPC_LOC_H_ 35 36 36 37 #include <ipc/common.h> 37 38 38 #define DEVMAP_NAME_MAXLEN 25539 #define LOC_NAME_MAXLEN 255 39 40 40 typedef sysarg_t devmap_handle_t; 41 typedef sysarg_t service_id_t; 42 typedef sysarg_t category_id_t; 41 43 42 44 typedef enum { 43 DEV_HANDLE_NONE,44 DEV_HANDLE_NAMESPACE,45 DEV_HANDLE_DEVICE46 } devmap_handle_type_t;45 LOC_OBJECT_NONE, 46 LOC_OBJECT_NAMESPACE, 47 LOC_OBJECT_SERVICE 48 } loc_object_type_t; 47 49 48 50 typedef enum { 49 DEVMAP_DRIVER_REGISTER = IPC_FIRST_USER_METHOD, 50 DEVMAP_DRIVER_UNREGISTER, 51 DEVMAP_DEVICE_REGISTER, 52 DEVMAP_DEVICE_UNREGISTER, 53 DEVMAP_DEVICE_GET_HANDLE, 54 DEVMAP_NAMESPACE_GET_HANDLE, 55 DEVMAP_HANDLE_PROBE, 56 DEVMAP_NULL_CREATE, 57 DEVMAP_NULL_DESTROY, 58 DEVMAP_GET_NAMESPACE_COUNT, 59 DEVMAP_GET_DEVICE_COUNT, 60 DEVMAP_GET_NAMESPACES, 61 DEVMAP_GET_DEVICES 62 } devmap_request_t; 51 LOC_SERVER_REGISTER = IPC_FIRST_USER_METHOD, 52 LOC_SERVER_UNREGISTER, 53 LOC_SERVICE_ADD_TO_CAT, 54 LOC_SERVICE_REGISTER, 55 LOC_SERVICE_UNREGISTER, 56 LOC_SERVICE_GET_ID, 57 LOC_NAMESPACE_GET_ID, 58 LOC_CATEGORY_GET_ID, 59 LOC_CATEGORY_GET_SVCS, 60 LOC_ID_PROBE, 61 LOC_NULL_CREATE, 62 LOC_NULL_DESTROY, 63 LOC_GET_NAMESPACE_COUNT, 64 LOC_GET_SERVICE_COUNT, 65 LOC_GET_NAMESPACES, 66 LOC_GET_SERVICES 67 } loc_request_t; 63 68 64 /** Interface provided by devmap.69 /** Ports provided by location service. 65 70 * 66 * Every process that connects to devmapmust ask one of following67 * interfacesotherwise connection will be refused.71 * Every process that connects to loc must ask one of following 72 * ports, otherwise connection will be refused. 68 73 * 69 74 */ 70 75 typedef enum { 71 /** Connect as device driver*/72 DEVMAP_DRIVER = 1,73 /** Connect as client */74 DEVMAP_CLIENT,76 /** Service supplier (server) port */ 77 LOC_PORT_SUPPLIER = 1, 78 /** Service consumer (client) port */ 79 LOC_PORT_CONSUMER, 75 80 /** Create new connection to instance of device that 76 81 is specified by second argument of call. */ 77 DEVMAP_CONNECT_TO_DEVICE78 } devmap_interface_t;82 LOC_CONNECT_TO_SERVICE 83 } loc_interface_t; 79 84 80 85 typedef struct { 81 devmap_handle_t handle;82 char name[ DEVMAP_NAME_MAXLEN + 1];83 } dev_desc_t;86 service_id_t id; 87 char name[LOC_NAME_MAXLEN + 1]; 88 } loc_sdesc_t; 84 89 85 90 #endif -
uspace/lib/c/include/ipc/services.h
r3751a08 r16dc887 45 45 SERVICE_VIDEO = FOURCC('v', 'i', 'd', ' '), 46 46 SERVICE_VFS = FOURCC('v', 'f', 's', ' '), 47 SERVICE_ DEVMAP = FOURCC('d', 'e', 'v', 'p'),47 SERVICE_LOC = FOURCC('l', 'o', 'c', ' '), 48 48 SERVICE_DEVMAN = FOURCC('d', 'e', 'v', 'n'), 49 49 SERVICE_IRC = FOURCC('i', 'r', 'c', ' '), -
uspace/lib/c/include/loc.h
r3751a08 r16dc887 33 33 */ 34 34 35 #ifndef LIBC_ DEVMAP_H_36 #define LIBC_ DEVMAP_H_35 #ifndef LIBC_LOC_H_ 36 #define LIBC_LOC_H_ 37 37 38 #include <ipc/ devmap.h>38 #include <ipc/loc.h> 39 39 #include <async.h> 40 40 #include <bool.h> 41 41 42 extern async_exch_t * devmap_exchange_begin_blocking(devmap_interface_t);43 extern async_exch_t * devmap_exchange_begin(devmap_interface_t);44 extern void devmap_exchange_end(async_exch_t *);42 extern async_exch_t *loc_exchange_begin_blocking(loc_interface_t); 43 extern async_exch_t *loc_exchange_begin(loc_interface_t); 44 extern void loc_exchange_end(async_exch_t *); 45 45 46 extern int devmap_driver_register(const char *, async_client_conn_t);47 extern int devmap_device_register(const char *, devmap_handle_t *);48 extern int devmap_device_register_with_iface(const char *, devmap_handle_t *,46 extern int loc_server_register(const char *, async_client_conn_t); 47 extern int loc_service_register(const char *, service_id_t *); 48 extern int loc_service_register_with_iface(const char *, service_id_t *, 49 49 sysarg_t); 50 extern int loc_service_add_to_cat(service_id_t, category_id_t); 50 51 51 extern int devmap_device_get_handle(const char *, devmap_handle_t *,52 extern int loc_service_get_id(const char *, service_id_t *, 52 53 unsigned int); 53 extern int devmap_namespace_get_handle(const char *, devmap_handle_t *,54 extern int loc_namespace_get_id(const char *, service_id_t *, 54 55 unsigned int); 55 extern devmap_handle_type_t devmap_handle_probe(devmap_handle_t); 56 extern int loc_category_get_id(const char *, category_id_t *, 57 unsigned int); 58 extern int loc_category_get_svcs(category_id_t, category_id_t **, size_t *); 59 extern loc_object_type_t loc_id_probe(service_id_t); 56 60 57 extern async_sess_t * devmap_device_connect(exch_mgmt_t, devmap_handle_t,61 extern async_sess_t *loc_service_connect(exch_mgmt_t, service_id_t, 58 62 unsigned int); 59 63 60 extern int devmap_null_create(void);61 extern void devmap_null_destroy(int);64 extern int loc_null_create(void); 65 extern void loc_null_destroy(int); 62 66 63 extern size_t devmap_count_namespaces(void);64 extern size_t devmap_count_devices(devmap_handle_t);67 extern size_t loc_count_namespaces(void); 68 extern size_t loc_count_services(service_id_t); 65 69 66 extern size_t devmap_get_namespaces(dev_desc_t **);67 extern size_t devmap_get_devices(devmap_handle_t, dev_desc_t **);70 extern size_t loc_get_namespaces(loc_sdesc_t **); 71 extern size_t loc_get_services(service_id_t, loc_sdesc_t **); 68 72 69 73 #endif -
uspace/lib/c/include/sys/stat.h
r3751a08 r16dc887 39 39 #include <bool.h> 40 40 #include <ipc/vfs.h> 41 #include <ipc/ devmap.h>41 #include <ipc/loc.h> 42 42 43 43 struct stat { 44 44 fs_handle_t fs_handle; 45 devmap_handle_t devmap_handle;45 service_id_t service_id; 46 46 fs_index_t index; 47 47 unsigned int lnkcnt; … … 49 49 bool is_directory; 50 50 aoff64_t size; 51 devmap_handle_t device;51 service_id_t service; 52 52 }; 53 53 -
uspace/lib/c/include/vfs/vfs.h
r3751a08 r16dc887 38 38 #include <sys/types.h> 39 39 #include <ipc/vfs.h> 40 #include <ipc/ devmap.h>40 #include <ipc/loc.h> 41 41 #include <stdio.h> 42 42 … … 49 49 typedef struct { 50 50 fs_handle_t fs_handle; 51 devmap_handle_t devmap_handle;51 service_id_t service_id; 52 52 fs_index_t index; 53 53 } fdi_node_t;
Note:
See TracChangeset
for help on using the changeset viewer.