Lines Matching refs:file
73 struct file *filp;
86 struct ucma_file *file; member
117 struct ucma_file *file) in _ucma_find_context() argument
124 else if (ctx->file != file) in _ucma_find_context()
129 static struct ucma_context *ucma_get_ctx(struct ucma_file *file, int id) in ucma_get_ctx() argument
134 ctx = _ucma_find_context(id, file); in ucma_get_ctx()
147 static struct ucma_context *ucma_alloc_ctx(struct ucma_file *file) in ucma_alloc_ctx() argument
158 ctx->file = file; in ucma_alloc_ctx()
166 list_add_tail(&ctx->list, &file->ctx_list); in ucma_alloc_ctx()
256 mutex_lock(&ctx->file->mut); in ucma_event_handler()
285 list_add_tail(&uevent->list, &ctx->file->event_list); in ucma_event_handler()
286 wake_up_interruptible(&ctx->file->poll_wait); in ucma_event_handler()
288 mutex_unlock(&ctx->file->mut); in ucma_event_handler()
292 static ssize_t ucma_get_event(struct ucma_file *file, const char __user *inbuf, in ucma_get_event() argument
306 mutex_lock(&file->mut); in ucma_get_event()
307 while (list_empty(&file->event_list)) { in ucma_get_event()
308 mutex_unlock(&file->mut); in ucma_get_event()
310 if (file->filp->f_flags & O_NONBLOCK) in ucma_get_event()
313 if (wait_event_interruptible(file->poll_wait, in ucma_get_event()
314 !list_empty(&file->event_list))) in ucma_get_event()
317 mutex_lock(&file->mut); in ucma_get_event()
320 uevent = list_entry(file->event_list.next, struct ucma_event, list); in ucma_get_event()
323 ctx = ucma_alloc_ctx(file); in ucma_get_event()
346 mutex_unlock(&file->mut); in ucma_get_event()
368 static ssize_t ucma_create_id(struct ucma_file *file, const char __user *inbuf, in ucma_create_id() argument
387 mutex_lock(&file->mut); in ucma_create_id()
388 ctx = ucma_alloc_ctx(file); in ucma_create_id()
389 mutex_unlock(&file->mut); in ucma_create_id()
435 list_for_each_entry_safe(uevent, tmp, &mc->ctx->file->event_list, list) { in ucma_cleanup_mc_events()
461 mutex_lock(&ctx->file->mut); in ucma_free_ctx()
462 list_for_each_entry_safe(uevent, tmp, &ctx->file->event_list, list) { in ucma_free_ctx()
467 mutex_unlock(&ctx->file->mut); in ucma_free_ctx()
481 static ssize_t ucma_destroy_id(struct ucma_file *file, const char __user *inbuf, in ucma_destroy_id() argument
496 ctx = _ucma_find_context(cmd.id, file); in ucma_destroy_id()
515 static ssize_t ucma_bind_ip(struct ucma_file *file, const char __user *inbuf, in ucma_bind_ip() argument
525 ctx = ucma_get_ctx(file, cmd.id); in ucma_bind_ip()
534 static ssize_t ucma_bind(struct ucma_file *file, const char __user *inbuf, in ucma_bind() argument
549 ctx = ucma_get_ctx(file, cmd.id); in ucma_bind()
558 static ssize_t ucma_resolve_ip(struct ucma_file *file, in ucma_resolve_ip() argument
569 ctx = ucma_get_ctx(file, cmd.id); in ucma_resolve_ip()
580 static ssize_t ucma_resolve_addr(struct ucma_file *file, in ucma_resolve_addr() argument
598 ctx = ucma_get_ctx(file, cmd.id); in ucma_resolve_addr()
607 static ssize_t ucma_resolve_route(struct ucma_file *file, in ucma_resolve_route() argument
618 ctx = ucma_get_ctx(file, cmd.id); in ucma_resolve_route()
691 static ssize_t ucma_query_route(struct ucma_file *file, in ucma_query_route() argument
707 ctx = ucma_get_ctx(file, cmd.id); in ucma_query_route()
873 static ssize_t ucma_query(struct ucma_file *file, in ucma_query() argument
886 ctx = ucma_get_ctx(file, cmd.id); in ucma_query()
925 static ssize_t ucma_connect(struct ucma_file *file, const char __user *inbuf, in ucma_connect() argument
939 ctx = ucma_get_ctx(file, cmd.id); in ucma_connect()
949 static ssize_t ucma_listen(struct ucma_file *file, const char __user *inbuf, in ucma_listen() argument
959 ctx = ucma_get_ctx(file, cmd.id); in ucma_listen()
970 static ssize_t ucma_accept(struct ucma_file *file, const char __user *inbuf, in ucma_accept() argument
981 ctx = ucma_get_ctx(file, cmd.id); in ucma_accept()
987 mutex_lock(&file->mut); in ucma_accept()
991 mutex_unlock(&file->mut); in ucma_accept()
999 static ssize_t ucma_reject(struct ucma_file *file, const char __user *inbuf, in ucma_reject() argument
1009 ctx = ucma_get_ctx(file, cmd.id); in ucma_reject()
1018 static ssize_t ucma_disconnect(struct ucma_file *file, const char __user *inbuf, in ucma_disconnect() argument
1028 ctx = ucma_get_ctx(file, cmd.id); in ucma_disconnect()
1037 static ssize_t ucma_init_qp_attr(struct ucma_file *file, in ucma_init_qp_attr() argument
1053 ctx = ucma_get_ctx(file, cmd.id); in ucma_init_qp_attr()
1175 static ssize_t ucma_set_option(struct ucma_file *file, const char __user *inbuf, in ucma_set_option() argument
1186 ctx = ucma_get_ctx(file, cmd.id); in ucma_set_option()
1206 static ssize_t ucma_notify(struct ucma_file *file, const char __user *inbuf, in ucma_notify() argument
1216 ctx = ucma_get_ctx(file, cmd.id); in ucma_notify()
1225 static ssize_t ucma_process_join(struct ucma_file *file, in ucma_process_join() argument
1241 ctx = ucma_get_ctx(file, cmd->id); in ucma_process_join()
1245 mutex_lock(&file->mut); in ucma_process_join()
1265 mutex_unlock(&file->mut); in ucma_process_join()
1279 mutex_unlock(&file->mut); in ucma_process_join()
1284 static ssize_t ucma_join_ip_multicast(struct ucma_file *file, in ucma_join_ip_multicast() argument
1301 return ucma_process_join(file, &join_cmd, out_len); in ucma_join_ip_multicast()
1304 static ssize_t ucma_join_multicast(struct ucma_file *file, in ucma_join_multicast() argument
1313 return ucma_process_join(file, &cmd, out_len); in ucma_join_multicast()
1316 static ssize_t ucma_leave_multicast(struct ucma_file *file, in ucma_leave_multicast() argument
1335 else if (mc->ctx->file != file) in ucma_leave_multicast()
1349 mutex_lock(&mc->ctx->file->mut); in ucma_leave_multicast()
1352 mutex_unlock(&mc->ctx->file->mut); in ucma_leave_multicast()
1388 static void ucma_move_events(struct ucma_context *ctx, struct ucma_file *file) in ucma_move_events() argument
1392 list_for_each_entry_safe(uevent, tmp, &ctx->file->event_list, list) in ucma_move_events()
1394 list_move_tail(&uevent->list, &file->event_list); in ucma_move_events()
1413 if (!f.file) in ucma_migrate_id()
1417 ctx = ucma_get_ctx(f.file->private_data, cmd.id); in ucma_migrate_id()
1423 cur_file = ctx->file; in ucma_migrate_id()
1438 ctx->file = new_file; in ucma_migrate_id()
1455 static ssize_t (*ucma_cmd_table[])(struct ucma_file *file,
1483 static ssize_t ucma_write(struct file *filp, const char __user *buf, in ucma_write()
1486 struct ucma_file *file = filp->private_data; in ucma_write() local
1508 ret = ucma_cmd_table[hdr.cmd](file, buf + sizeof(hdr), hdr.in, hdr.out); in ucma_write()
1515 static unsigned int ucma_poll(struct file *filp, struct poll_table_struct *wait) in ucma_poll()
1517 struct ucma_file *file = filp->private_data; in ucma_poll() local
1520 poll_wait(filp, &file->poll_wait, wait); in ucma_poll()
1522 if (!list_empty(&file->event_list)) in ucma_poll()
1536 static int ucma_open(struct inode *inode, struct file *filp) in ucma_open()
1538 struct ucma_file *file; in ucma_open() local
1540 file = kmalloc(sizeof *file, GFP_KERNEL); in ucma_open()
1541 if (!file) in ucma_open()
1544 INIT_LIST_HEAD(&file->event_list); in ucma_open()
1545 INIT_LIST_HEAD(&file->ctx_list); in ucma_open()
1546 init_waitqueue_head(&file->poll_wait); in ucma_open()
1547 mutex_init(&file->mut); in ucma_open()
1549 filp->private_data = file; in ucma_open()
1550 file->filp = filp; in ucma_open()
1555 static int ucma_close(struct inode *inode, struct file *filp) in ucma_close()
1557 struct ucma_file *file = filp->private_data; in ucma_close() local
1560 mutex_lock(&file->mut); in ucma_close()
1561 list_for_each_entry_safe(ctx, tmp, &file->ctx_list, list) { in ucma_close()
1562 mutex_unlock(&file->mut); in ucma_close()
1569 mutex_lock(&file->mut); in ucma_close()
1571 mutex_unlock(&file->mut); in ucma_close()
1572 kfree(file); in ucma_close()