Changeset 58fe0aa in mainline
- Timestamp:
- 2010-12-27T17:41:19Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d493830e
- Parents:
- f57aebc (diff), 6e5b4e7 (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. - Files:
-
- 1 added
- 1 deleted
- 7 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
boot/arch/ia64/Makefile.inc
rf57aebc r58fe0aa 34 34 ENDIANESS = LE 35 35 PAGE_SIZE = 16384 36 EXTRA_CFLAGS = -fno-unwind-tables -mfixed-range=f32-f127 -mno-pic 36 EXTRA_CFLAGS = -fno-unwind-tables -mfixed-range=f32-f127 -mno-pic -mno-sdata 37 37 38 38 RD_SRVS_NON_ESSENTIAL += -
uspace/lib/c/Makefile
rf57aebc r58fe0aa 87 87 generic/ipc.c \ 88 88 generic/async.c \ 89 generic/async_ rel.c \89 generic/async_sess.c \ 90 90 generic/loader.c \ 91 91 generic/getopt.c \ -
uspace/lib/c/generic/async.c
rf57aebc r58fe0aa 749 749 return ENOMEM; 750 750 } 751 752 _async_sess_init(); 751 753 752 754 return 0; -
uspace/lib/c/generic/libc.c
rf57aebc r58fe0aa 50 50 #include <ipc/ipc.h> 51 51 #include <async.h> 52 #include <async_rel.h>53 52 #include <as.h> 54 53 #include <loader/pcb.h> … … 66 65 __heap_init(); 67 66 __async_init(); 68 (void) async_rel_init();69 67 fibril_t *fibril = fibril_setup(); 70 68 __tcb_set(fibril->tcb); -
uspace/lib/c/include/async.h
rf57aebc r58fe0aa 37 37 38 38 #include <ipc/ipc.h> 39 #include <async_sess.h> 39 40 #include <fibril.h> 40 41 #include <sys/time.h> -
uspace/lib/c/include/async_sess.h
rf57aebc r58fe0aa 33 33 */ 34 34 35 #ifndef LIBC_ASYNC_ REL_H_36 #define LIBC_ASYNC_ REL_H_35 #ifndef LIBC_ASYNC_SESS_H_ 36 #define LIBC_ASYNC_SESS_H_ 37 37 38 extern int async_rel_init(void); 39 extern int async_relation_create(int); 40 extern void async_relation_destroy(int, int); 38 #include <adt/list.h> 39 40 typedef struct { 41 int sess_phone; /**< Phone for cloning off the connections. */ 42 link_t conn_head; /**< List of open data connections. */ 43 link_t sess_link; /**< Link in global list of open sessions. */ 44 } async_sess_t; 45 46 extern void _async_sess_init(void); 47 extern void async_session_create(async_sess_t *, int); 48 extern void async_session_destroy(async_sess_t *); 49 extern int async_exchange_begin(async_sess_t *); 50 extern void async_exchange_end(async_sess_t *, int); 41 51 42 52 #endif -
uspace/srv/vfs/vfs.h
rf57aebc r58fe0aa 34 34 #define VFS_VFS_H_ 35 35 36 #include <async.h> 36 37 #include <ipc/ipc.h> 37 38 #include <adt/list.h> … … 53 54 vfs_info_t vfs_info; 54 55 fs_handle_t fs_handle; 55 fibril_mutex_t phone_lock; 56 sysarg_t phone; 56 async_sess_t session; 57 57 } fs_info_t; 58 58 -
uspace/srv/vfs/vfs_register.c
rf57aebc r58fe0aa 39 39 #include <ipc/services.h> 40 40 #include <async.h> 41 #include <async_rel.h>42 41 #include <fibril.h> 43 42 #include <fibril_synch.h> … … 111 110 void vfs_register(ipc_callid_t rid, ipc_call_t *request) 112 111 { 112 int phone; 113 113 114 dprintf("Processing VFS_REGISTER request received from %p.\n", 114 115 request->in_phone_hash); … … 136 137 137 138 link_initialize(&fs_info->fs_link); 138 fibril_mutex_initialize(&fs_info->phone_lock);139 139 fs_info->vfs_info = *vfs_info; 140 140 free(vfs_info); … … 186 186 return; 187 187 } 188 fs_info->phone = IPC_GET_ARG5(call); 188 189 phone = IPC_GET_ARG5(call); 190 async_session_create(&fs_info->session, phone); 189 191 ipc_answer_0(callid, EOK); 190 192 … … 200 202 list_remove(&fs_info->fs_link); 201 203 fibril_mutex_unlock(&fs_head_lock); 202 ipc_hangup(fs_info->phone); 204 async_session_destroy(&fs_info->session); 205 ipc_hangup(phone); 203 206 free(fs_info); 204 207 ipc_answer_0(callid, EINVAL); … … 214 217 list_remove(&fs_info->fs_link); 215 218 fibril_mutex_unlock(&fs_head_lock); 216 ipc_hangup(fs_info->phone); 219 async_session_destroy(&fs_info->session); 220 ipc_hangup(phone); 217 221 free(fs_info); 218 222 ipc_answer_0(callid, EINVAL); … … 269 273 if (fs->fs_handle == handle) { 270 274 fibril_mutex_unlock(&fs_head_lock); 271 fibril_mutex_lock(&fs->phone_lock); 272 phone = async_relation_create(fs->phone); 273 fibril_mutex_unlock(&fs->phone_lock); 275 phone = async_exchange_begin(&fs->session); 274 276 275 277 assert(phone > 0); … … 295 297 if (fs->fs_handle == handle) { 296 298 fibril_mutex_unlock(&fs_head_lock); 297 fibril_mutex_lock(&fs->phone_lock); 298 async_relation_destroy(fs->phone, phone); 299 fibril_mutex_unlock(&fs->phone_lock); 299 async_exchange_end(&fs->session, phone); 300 300 return; 301 301 }
Note:
See TracChangeset
for help on using the changeset viewer.