Lines Matching defs:cfile

43 static void genwqe_add_file(struct genwqe_dev *cd, struct genwqe_file *cfile)
47 cfile->opener = get_pid(task_tgid(current));
49 list_add(&cfile->list, &cd->file_list);
53 static int genwqe_del_file(struct genwqe_dev *cd, struct genwqe_file *cfile)
58 list_del(&cfile->list);
60 put_pid(cfile->opener);
65 static void genwqe_add_pin(struct genwqe_file *cfile, struct dma_mapping *m)
69 spin_lock_irqsave(&cfile->pin_lock, flags);
70 list_add(&m->pin_list, &cfile->pin_list);
71 spin_unlock_irqrestore(&cfile->pin_lock, flags);
74 static int genwqe_del_pin(struct genwqe_file *cfile, struct dma_mapping *m)
78 spin_lock_irqsave(&cfile->pin_lock, flags);
80 spin_unlock_irqrestore(&cfile->pin_lock, flags);
87 * @cfile: Descriptor of opened file
94 static struct dma_mapping *genwqe_search_pin(struct genwqe_file *cfile,
102 spin_lock_irqsave(&cfile->pin_lock, flags);
104 list_for_each_entry(m, &cfile->pin_list, pin_list) {
112 spin_unlock_irqrestore(&cfile->pin_lock, flags);
116 spin_unlock_irqrestore(&cfile->pin_lock, flags);
120 static void __genwqe_add_mapping(struct genwqe_file *cfile,
125 spin_lock_irqsave(&cfile->map_lock, flags);
126 list_add(&dma_map->card_list, &cfile->map_list);
127 spin_unlock_irqrestore(&cfile->map_lock, flags);
130 static void __genwqe_del_mapping(struct genwqe_file *cfile,
135 spin_lock_irqsave(&cfile->map_lock, flags);
137 spin_unlock_irqrestore(&cfile->map_lock, flags);
143 * @cfile: descriptor of opened file
150 static struct dma_mapping *__genwqe_search_mapping(struct genwqe_file *cfile,
158 struct pci_dev *pci_dev = cfile->cd->pci_dev;
160 spin_lock_irqsave(&cfile->map_lock, flags);
161 list_for_each_entry(m, &cfile->map_list, card_list) {
176 spin_unlock_irqrestore(&cfile->map_lock, flags);
180 spin_unlock_irqrestore(&cfile->map_lock, flags);
189 static void genwqe_remove_mappings(struct genwqe_file *cfile)
194 struct genwqe_dev *cd = cfile->cd;
195 struct pci_dev *pci_dev = cfile->cd->pci_dev;
197 list_for_each_safe(node, next, &cfile->map_list) {
228 static void genwqe_remove_pinnings(struct genwqe_file *cfile)
232 struct genwqe_dev *cd = cfile->cd;
234 list_for_each_safe(node, next, &cfile->pin_list) {
262 struct genwqe_file *cfile;
265 list_for_each_entry(cfile, &cd->file_list, list) {
266 if (cfile->async_queue)
267 kill_fasync(&cfile->async_queue, sig, POLL_HUP);
278 struct genwqe_file *cfile;
281 list_for_each_entry(cfile, &cd->file_list, list) {
282 kill_pid(cfile->opener, SIGKILL, 1);
302 struct genwqe_file *cfile;
304 cfile = kzalloc(sizeof(*cfile), GFP_KERNEL);
305 if (cfile == NULL)
309 cfile->cd = cd;
310 cfile->filp = filp;
311 cfile->client = NULL;
313 spin_lock_init(&cfile->map_lock); /* list of raw memory allocations */
314 INIT_LIST_HEAD(&cfile->map_list);
316 spin_lock_init(&cfile->pin_lock); /* list of user pinned memory */
317 INIT_LIST_HEAD(&cfile->pin_list);
319 filp->private_data = cfile;
321 genwqe_add_file(cd, cfile);
359 struct genwqe_file *cfile = (struct genwqe_file *)filp->private_data;
360 struct genwqe_dev *cd = cfile->cd;
363 genwqe_remove_mappings(cfile);
364 genwqe_remove_pinnings(cfile);
370 * For this to work we must not release cd when this cfile is
374 genwqe_del_file(cd, cfile);
375 kfree(cfile);
399 struct genwqe_file *cfile = vma->vm_private_data;
401 dma_map = __genwqe_search_mapping(cfile, vma->vm_start, vsize,
410 __genwqe_del_mapping(cfile, dma_map);
439 struct genwqe_file *cfile = (struct genwqe_file *)filp->private_data;
440 struct genwqe_dev *cd = cfile->cd;
478 vma->vm_private_data = cfile;
480 __genwqe_add_mapping(cfile, dma_map);
497 * @cfile: Descriptor of opened file
502 static int do_flash_update(struct genwqe_file *cfile,
514 struct genwqe_dev *cd = cfile->cd;
515 struct file *filp = cfile->filp;
639 static int do_flash_read(struct genwqe_file *cfile,
649 struct genwqe_dev *cd = cfile->cd;
650 struct file *filp = cfile->filp;
769 static int genwqe_pin_mem(struct genwqe_file *cfile, struct genwqe_mem *m)
772 struct genwqe_dev *cd = cfile->cd;
773 struct pci_dev *pci_dev = cfile->cd->pci_dev;
799 genwqe_add_pin(cfile, dma_map);
803 static int genwqe_unpin_mem(struct genwqe_file *cfile, struct genwqe_mem *m)
805 struct genwqe_dev *cd = cfile->cd;
816 dma_map = genwqe_search_pin(cfile, map_addr, map_size, NULL);
820 genwqe_del_pin(cfile, dma_map);
828 * @cfile: Descriptor of opened file
833 static int ddcb_cmd_cleanup(struct genwqe_file *cfile, struct ddcb_requ *req)
837 struct genwqe_dev *cd = cfile->cd;
843 __genwqe_del_mapping(cfile, dma_map);
854 * @cfile: Descriptor of opened file
862 static int ddcb_cmd_fixups(struct genwqe_file *cfile, struct ddcb_requ *req)
866 struct genwqe_dev *cd = cfile->cd;
903 m = __genwqe_search_mapping(cfile, u_addr, u_size,
935 m = genwqe_search_pin(cfile, u_addr, u_size, NULL);
953 __genwqe_add_mapping(cfile, m);
980 ddcb_cmd_cleanup(cfile, req);
986 * @cfile: Descriptor of opened file
993 static int genwqe_execute_ddcb(struct genwqe_file *cfile,
997 struct genwqe_dev *cd = cfile->cd;
998 struct file *filp = cfile->filp;
1001 rc = ddcb_cmd_fixups(cfile, req);
1006 ddcb_cmd_cleanup(cfile, req);
1010 static int do_execute_ddcb(struct genwqe_file *cfile,
1015 struct genwqe_dev *cd = cfile->cd;
1016 struct file *filp = cfile->filp;
1028 rc = genwqe_execute_ddcb(cfile, cmd);
1056 struct genwqe_file *cfile = (struct genwqe_file *)filp->private_data;
1057 struct genwqe_dev *cd = cfile->cd;
1163 rc = do_flash_update(cfile, &load);
1183 rc = do_flash_read(cfile, &load);
1198 return genwqe_pin_mem(cfile, &m);
1207 return genwqe_unpin_mem(cfile, &m);
1212 return do_execute_ddcb(cfile, arg, 0);
1219 return do_execute_ddcb(cfile, arg, 1);