Changeset 852b801 in mainline for uspace/srv/fs
- Timestamp:
- 2009-06-28T18:59:02Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 75160a6
- Parents:
- 4198f9c3
- Location:
- uspace/srv/fs
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/devfs/devfs.c
r4198f9c3 r852b801 80 80 devfs_open_node(callid, &call); 81 81 break; 82 case VFS_OUT_ DEVICE:83 devfs_ device(callid, &call);82 case VFS_OUT_STAT: 83 devfs_stat(callid, &call); 84 84 break; 85 85 case VFS_OUT_READ: -
uspace/srv/fs/devfs/devfs_ops.c
r4198f9c3 r852b801 44 44 #include <fibril_sync.h> 45 45 #include <adt/hash_table.h> 46 #include <sys/stat.h> 46 47 #include "devfs.h" 47 48 #include "devfs_ops.h" … … 278 279 } 279 280 280 void devfs_device(ipc_callid_t rid, ipc_call_t *request) 281 { 281 void devfs_stat(ipc_callid_t rid, ipc_call_t *request) 282 { 283 dev_handle_t dev_handle = (dev_handle_t) IPC_GET_ARG1(*request); 282 284 fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request); 285 286 ipc_callid_t callid; 287 size_t size; 288 if (!ipc_data_read_receive(&callid, &size) || 289 size < sizeof(struct stat)) { 290 ipc_answer_0(callid, EINVAL); 291 ipc_answer_0(rid, EINVAL); 292 return; 293 } 294 295 struct stat *stat = malloc(sizeof(struct stat)); 296 if (!stat) { 297 ipc_answer_0(callid, ENOMEM); 298 ipc_answer_0(rid, ENOMEM); 299 return; 300 } 301 memset(stat, 0, sizeof(struct stat)); 302 303 stat->fs_handle = devfs_reg.fs_handle; 304 stat->dev_handle = dev_handle; 305 stat->index = index; 306 stat->lnkcnt = 1; 307 stat->is_file = (index != 0); 308 stat->size = 0; 283 309 284 310 if (index != 0) { … … 289 315 fibril_mutex_lock(&devices_mutex); 290 316 link_t *lnk = hash_table_find(&devices, key); 291 if (lnk == NULL) { 292 fibril_mutex_unlock(&devices_mutex); 293 ipc_answer_0(rid, ENOENT); 294 return; 295 } 317 if (lnk != NULL) 318 stat->devfs_stat.device = (dev_handle_t)index; 296 319 fibril_mutex_unlock(&devices_mutex); 297 298 ipc_answer_1(rid, EOK, (ipcarg_t) index); 299 } else 300 ipc_answer_0(rid, ENOTSUP); 320 } 321 322 ipc_data_read_finalize(callid, stat, sizeof(struct stat)); 323 ipc_answer_0(rid, EOK); 324 325 free(stat); 301 326 } 302 327 -
uspace/srv/fs/devfs/devfs_ops.h
r4198f9c3 r852b801 43 43 extern void devfs_lookup(ipc_callid_t, ipc_call_t *); 44 44 extern void devfs_open_node(ipc_callid_t, ipc_call_t *); 45 extern void devfs_ device(ipc_callid_t, ipc_call_t *);45 extern void devfs_stat(ipc_callid_t, ipc_call_t *); 46 46 extern void devfs_sync(ipc_callid_t, ipc_call_t *); 47 47 extern void devfs_read(ipc_callid_t, ipc_call_t *); -
uspace/srv/fs/fat/fat.c
r4198f9c3 r852b801 110 110 fat_truncate(callid, &call); 111 111 break; 112 case VFS_OUT_STAT: 113 fat_stat(callid, &call); 114 break; 112 115 case VFS_OUT_CLOSE: 113 116 fat_close(callid, &call); … … 118 121 case VFS_OUT_OPEN_NODE: 119 122 fat_open_node(callid, &call); 120 break;121 case VFS_OUT_DEVICE:122 fat_device(callid, &call);123 123 break; 124 124 case VFS_OUT_SYNC: -
uspace/srv/fs/fat/fat.h
r4198f9c3 r852b801 208 208 extern void fat_write(ipc_callid_t, ipc_call_t *); 209 209 extern void fat_truncate(ipc_callid_t, ipc_call_t *); 210 extern void fat_stat(ipc_callid_t, ipc_call_t *); 210 211 extern void fat_close(ipc_callid_t, ipc_call_t *); 211 212 extern void fat_destroy(ipc_callid_t, ipc_call_t *); 212 213 extern void fat_open_node(ipc_callid_t, ipc_call_t *); 213 extern void fat_ device(ipc_callid_t, ipc_call_t *);214 extern void fat_stat(ipc_callid_t, ipc_call_t *); 214 215 extern void fat_sync(ipc_callid_t, ipc_call_t *); 215 216 -
uspace/srv/fs/fat/fat_ops.c
r4198f9c3 r852b801 1203 1203 } 1204 1204 1205 void fat_ device(ipc_callid_t rid, ipc_call_t *request)1205 void fat_stat(ipc_callid_t rid, ipc_call_t *request) 1206 1206 { 1207 1207 ipc_answer_0(rid, ENOTSUP); -
uspace/srv/fs/tmpfs/tmpfs.c
r4198f9c3 r852b801 126 126 tmpfs_open_node(callid, &call); 127 127 break; 128 case VFS_OUT_ DEVICE:129 tmpfs_ device(callid, &call);128 case VFS_OUT_STAT: 129 tmpfs_stat(callid, &call); 130 130 break; 131 131 case VFS_OUT_SYNC: -
uspace/srv/fs/tmpfs/tmpfs.h
r4198f9c3 r852b801 87 87 extern void tmpfs_write(ipc_callid_t, ipc_call_t *); 88 88 extern void tmpfs_truncate(ipc_callid_t, ipc_call_t *); 89 extern void tmpfs_stat(ipc_callid_t, ipc_call_t *); 89 90 extern void tmpfs_close(ipc_callid_t, ipc_call_t *); 90 91 extern void tmpfs_destroy(ipc_callid_t, ipc_call_t *); 91 92 extern void tmpfs_open_node(ipc_callid_t, ipc_call_t *); 92 extern void tmpfs_device(ipc_callid_t, ipc_call_t *);93 93 extern void tmpfs_sync(ipc_callid_t, ipc_call_t *); 94 94 -
uspace/srv/fs/tmpfs/tmpfs_ops.c
r4198f9c3 r852b801 629 629 } 630 630 631 void tmpfs_ device(ipc_callid_t rid, ipc_call_t *request)631 void tmpfs_stat(ipc_callid_t rid, ipc_call_t *request) 632 632 { 633 633 ipc_answer_0(rid, ENOTSUP);
Note:
See TracChangeset
for help on using the changeset viewer.