Lines Matching refs:file

69 	struct file *filp;
83 struct ib_ucm_file *file; member
125 static struct ib_ucm_context *ib_ucm_ctx_get(struct ib_ucm_file *file, int id) in ib_ucm_ctx_get() argument
133 else if (ctx->file != file) in ib_ucm_ctx_get()
157 mutex_lock(&ctx->file->file_mutex); in ib_ucm_cleanup_events()
165 mutex_unlock(&ctx->file->file_mutex); in ib_ucm_cleanup_events()
172 mutex_lock(&ctx->file->file_mutex); in ib_ucm_cleanup_events()
174 mutex_unlock(&ctx->file->file_mutex); in ib_ucm_cleanup_events()
177 static struct ib_ucm_context *ib_ucm_ctx_alloc(struct ib_ucm_file *file) in ib_ucm_ctx_alloc() argument
187 ctx->file = file; in ib_ucm_ctx_alloc()
196 list_add_tail(&ctx->file_list, &file->ctxs); in ib_ucm_ctx_alloc()
371 mutex_lock(&ctx->file->file_mutex); in ib_ucm_event_handler()
372 list_add_tail(&uevent->file_list, &ctx->file->events); in ib_ucm_event_handler()
374 wake_up_interruptible(&ctx->file->poll_wait); in ib_ucm_event_handler()
375 mutex_unlock(&ctx->file->file_mutex); in ib_ucm_event_handler()
385 static ssize_t ib_ucm_event(struct ib_ucm_file *file, in ib_ucm_event() argument
400 mutex_lock(&file->file_mutex); in ib_ucm_event()
401 while (list_empty(&file->events)) { in ib_ucm_event()
402 mutex_unlock(&file->file_mutex); in ib_ucm_event()
404 if (file->filp->f_flags & O_NONBLOCK) in ib_ucm_event()
407 if (wait_event_interruptible(file->poll_wait, in ib_ucm_event()
408 !list_empty(&file->events))) in ib_ucm_event()
411 mutex_lock(&file->file_mutex); in ib_ucm_event()
414 uevent = list_entry(file->events.next, struct ib_ucm_event, file_list); in ib_ucm_event()
417 ctx = ib_ucm_ctx_alloc(file); in ib_ucm_event()
466 mutex_unlock(&file->file_mutex); in ib_ucm_event()
470 static ssize_t ib_ucm_create_id(struct ib_ucm_file *file, in ib_ucm_create_id() argument
485 mutex_lock(&file->file_mutex); in ib_ucm_create_id()
486 ctx = ib_ucm_ctx_alloc(file); in ib_ucm_create_id()
487 mutex_unlock(&file->file_mutex); in ib_ucm_create_id()
492 ctx->cm_id = ib_create_cm_id(file->device->ib_dev, in ib_ucm_create_id()
517 static ssize_t ib_ucm_destroy_id(struct ib_ucm_file *file, in ib_ucm_destroy_id() argument
536 else if (ctx->file != file) in ib_ucm_destroy_id()
562 static ssize_t ib_ucm_attr_id(struct ib_ucm_file *file, in ib_ucm_attr_id() argument
577 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_attr_id()
594 static ssize_t ib_ucm_init_qp_attr(struct ib_ucm_file *file, in ib_ucm_init_qp_attr() argument
610 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_init_qp_attr()
643 static ssize_t ib_ucm_listen(struct ib_ucm_file *file, in ib_ucm_listen() argument
654 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_listen()
669 static ssize_t ib_ucm_notify(struct ib_ucm_file *file, in ib_ucm_notify() argument
680 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_notify()
732 static ssize_t ib_ucm_send_req(struct ib_ucm_file *file, in ib_ucm_send_req() argument
776 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_req()
790 static ssize_t ib_ucm_send_rep(struct ib_ucm_file *file, in ib_ucm_send_rep() argument
818 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_rep()
830 static ssize_t ib_ucm_send_private_data(struct ib_ucm_file *file, in ib_ucm_send_private_data() argument
848 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_private_data()
859 static ssize_t ib_ucm_send_rtu(struct ib_ucm_file *file, in ib_ucm_send_rtu() argument
863 return ib_ucm_send_private_data(file, inbuf, in_len, ib_send_cm_rtu); in ib_ucm_send_rtu()
866 static ssize_t ib_ucm_send_dreq(struct ib_ucm_file *file, in ib_ucm_send_dreq() argument
870 return ib_ucm_send_private_data(file, inbuf, in_len, ib_send_cm_dreq); in ib_ucm_send_dreq()
873 static ssize_t ib_ucm_send_drep(struct ib_ucm_file *file, in ib_ucm_send_drep() argument
877 return ib_ucm_send_private_data(file, inbuf, in_len, ib_send_cm_drep); in ib_ucm_send_drep()
880 static ssize_t ib_ucm_send_info(struct ib_ucm_file *file, in ib_ucm_send_info() argument
906 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_info()
920 static ssize_t ib_ucm_send_rej(struct ib_ucm_file *file, in ib_ucm_send_rej() argument
924 return ib_ucm_send_info(file, inbuf, in_len, (void *)ib_send_cm_rej); in ib_ucm_send_rej()
927 static ssize_t ib_ucm_send_apr(struct ib_ucm_file *file, in ib_ucm_send_apr() argument
931 return ib_ucm_send_info(file, inbuf, in_len, (void *)ib_send_cm_apr); in ib_ucm_send_apr()
934 static ssize_t ib_ucm_send_mra(struct ib_ucm_file *file, in ib_ucm_send_mra() argument
950 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_mra()
961 static ssize_t ib_ucm_send_lap(struct ib_ucm_file *file, in ib_ucm_send_lap() argument
982 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_lap()
995 static ssize_t ib_ucm_send_sidr_req(struct ib_ucm_file *file, in ib_ucm_send_sidr_req() argument
1023 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_sidr_req()
1036 static ssize_t ib_ucm_send_sidr_rep(struct ib_ucm_file *file, in ib_ucm_send_sidr_rep() argument
1065 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_sidr_rep()
1078 static ssize_t (*ucm_cmd_table[])(struct ib_ucm_file *file,
1101 static ssize_t ib_ucm_write(struct file *filp, const char __user *buf, in ib_ucm_write()
1104 struct ib_ucm_file *file = filp->private_data; in ib_ucm_write() local
1123 result = ucm_cmd_table[hdr.cmd](file, buf + sizeof(hdr), in ib_ucm_write()
1131 static unsigned int ib_ucm_poll(struct file *filp, in ib_ucm_poll()
1134 struct ib_ucm_file *file = filp->private_data; in ib_ucm_poll() local
1137 poll_wait(filp, &file->poll_wait, wait); in ib_ucm_poll()
1139 if (!list_empty(&file->events)) in ib_ucm_poll()
1153 static int ib_ucm_open(struct inode *inode, struct file *filp) in ib_ucm_open()
1155 struct ib_ucm_file *file; in ib_ucm_open() local
1157 file = kmalloc(sizeof(*file), GFP_KERNEL); in ib_ucm_open()
1158 if (!file) in ib_ucm_open()
1161 INIT_LIST_HEAD(&file->events); in ib_ucm_open()
1162 INIT_LIST_HEAD(&file->ctxs); in ib_ucm_open()
1163 init_waitqueue_head(&file->poll_wait); in ib_ucm_open()
1165 mutex_init(&file->file_mutex); in ib_ucm_open()
1167 filp->private_data = file; in ib_ucm_open()
1168 file->filp = filp; in ib_ucm_open()
1169 file->device = container_of(inode->i_cdev, struct ib_ucm_device, cdev); in ib_ucm_open()
1174 static int ib_ucm_close(struct inode *inode, struct file *filp) in ib_ucm_close()
1176 struct ib_ucm_file *file = filp->private_data; in ib_ucm_close() local
1179 mutex_lock(&file->file_mutex); in ib_ucm_close()
1180 while (!list_empty(&file->ctxs)) { in ib_ucm_close()
1181 ctx = list_entry(file->ctxs.next, in ib_ucm_close()
1183 mutex_unlock(&file->file_mutex); in ib_ucm_close()
1193 mutex_lock(&file->file_mutex); in ib_ucm_close()
1195 mutex_unlock(&file->file_mutex); in ib_ucm_close()
1196 kfree(file); in ib_ucm_close()