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()
668 static ssize_t ib_ucm_notify(struct ib_ucm_file *file, in ib_ucm_notify() argument
679 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_notify()
731 static ssize_t ib_ucm_send_req(struct ib_ucm_file *file, in ib_ucm_send_req() argument
775 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_req()
789 static ssize_t ib_ucm_send_rep(struct ib_ucm_file *file, in ib_ucm_send_rep() argument
817 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_rep()
829 static ssize_t ib_ucm_send_private_data(struct ib_ucm_file *file, in ib_ucm_send_private_data() argument
847 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_private_data()
858 static ssize_t ib_ucm_send_rtu(struct ib_ucm_file *file, in ib_ucm_send_rtu() argument
862 return ib_ucm_send_private_data(file, inbuf, in_len, ib_send_cm_rtu); in ib_ucm_send_rtu()
865 static ssize_t ib_ucm_send_dreq(struct ib_ucm_file *file, in ib_ucm_send_dreq() argument
869 return ib_ucm_send_private_data(file, inbuf, in_len, ib_send_cm_dreq); in ib_ucm_send_dreq()
872 static ssize_t ib_ucm_send_drep(struct ib_ucm_file *file, in ib_ucm_send_drep() argument
876 return ib_ucm_send_private_data(file, inbuf, in_len, ib_send_cm_drep); in ib_ucm_send_drep()
879 static ssize_t ib_ucm_send_info(struct ib_ucm_file *file, in ib_ucm_send_info() argument
905 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_info()
919 static ssize_t ib_ucm_send_rej(struct ib_ucm_file *file, in ib_ucm_send_rej() argument
923 return ib_ucm_send_info(file, inbuf, in_len, (void *)ib_send_cm_rej); in ib_ucm_send_rej()
926 static ssize_t ib_ucm_send_apr(struct ib_ucm_file *file, in ib_ucm_send_apr() argument
930 return ib_ucm_send_info(file, inbuf, in_len, (void *)ib_send_cm_apr); in ib_ucm_send_apr()
933 static ssize_t ib_ucm_send_mra(struct ib_ucm_file *file, in ib_ucm_send_mra() argument
949 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_mra()
960 static ssize_t ib_ucm_send_lap(struct ib_ucm_file *file, in ib_ucm_send_lap() argument
981 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_lap()
994 static ssize_t ib_ucm_send_sidr_req(struct ib_ucm_file *file, in ib_ucm_send_sidr_req() argument
1022 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_sidr_req()
1035 static ssize_t ib_ucm_send_sidr_rep(struct ib_ucm_file *file, in ib_ucm_send_sidr_rep() argument
1064 ctx = ib_ucm_ctx_get(file, cmd.id); in ib_ucm_send_sidr_rep()
1077 static ssize_t (*ucm_cmd_table[])(struct ib_ucm_file *file,
1100 static ssize_t ib_ucm_write(struct file *filp, const char __user *buf, in ib_ucm_write()
1103 struct ib_ucm_file *file = filp->private_data; in ib_ucm_write() local
1122 result = ucm_cmd_table[hdr.cmd](file, buf + sizeof(hdr), in ib_ucm_write()
1130 static unsigned int ib_ucm_poll(struct file *filp, in ib_ucm_poll()
1133 struct ib_ucm_file *file = filp->private_data; in ib_ucm_poll() local
1136 poll_wait(filp, &file->poll_wait, wait); in ib_ucm_poll()
1138 if (!list_empty(&file->events)) in ib_ucm_poll()
1152 static int ib_ucm_open(struct inode *inode, struct file *filp) in ib_ucm_open()
1154 struct ib_ucm_file *file; in ib_ucm_open() local
1156 file = kmalloc(sizeof(*file), GFP_KERNEL); in ib_ucm_open()
1157 if (!file) in ib_ucm_open()
1160 INIT_LIST_HEAD(&file->events); in ib_ucm_open()
1161 INIT_LIST_HEAD(&file->ctxs); in ib_ucm_open()
1162 init_waitqueue_head(&file->poll_wait); in ib_ucm_open()
1164 mutex_init(&file->file_mutex); in ib_ucm_open()
1166 filp->private_data = file; in ib_ucm_open()
1167 file->filp = filp; in ib_ucm_open()
1168 file->device = container_of(inode->i_cdev, struct ib_ucm_device, cdev); in ib_ucm_open()
1173 static int ib_ucm_close(struct inode *inode, struct file *filp) in ib_ucm_close()
1175 struct ib_ucm_file *file = filp->private_data; in ib_ucm_close() local
1178 mutex_lock(&file->file_mutex); in ib_ucm_close()
1179 while (!list_empty(&file->ctxs)) { in ib_ucm_close()
1180 ctx = list_entry(file->ctxs.next, in ib_ucm_close()
1182 mutex_unlock(&file->file_mutex); in ib_ucm_close()
1192 mutex_lock(&file->file_mutex); in ib_ucm_close()
1194 mutex_unlock(&file->file_mutex); in ib_ucm_close()
1195 kfree(file); in ib_ucm_close()