Lines Matching refs:tap_major

394 	struct major_info *tap_major;  in tap_get_major()  local
396 list_for_each_entry_rcu(tap_major, &major_list, next) { in tap_get_major()
397 if (tap_major->major == major) in tap_get_major()
398 return tap_major; in tap_get_major()
407 struct major_info *tap_major; in tap_get_minor() local
410 tap_major = tap_get_major(MAJOR(major)); in tap_get_minor()
411 if (!tap_major) { in tap_get_minor()
416 spin_lock(&tap_major->minor_lock); in tap_get_minor()
417 retval = idr_alloc(&tap_major->minor_idr, tap, 1, TAP_NUM_DEVS, GFP_ATOMIC); in tap_get_minor()
424 spin_unlock(&tap_major->minor_lock); in tap_get_minor()
434 struct major_info *tap_major; in tap_free_minor() local
437 tap_major = tap_get_major(MAJOR(major)); in tap_free_minor()
438 if (!tap_major) { in tap_free_minor()
442 spin_lock(&tap_major->minor_lock); in tap_free_minor()
444 idr_remove(&tap_major->minor_idr, tap->minor); in tap_free_minor()
447 spin_unlock(&tap_major->minor_lock); in tap_free_minor()
458 struct major_info *tap_major; in dev_get_by_tap_file() local
461 tap_major = tap_get_major(major); in dev_get_by_tap_file()
462 if (!tap_major) { in dev_get_by_tap_file()
467 spin_lock(&tap_major->minor_lock); in dev_get_by_tap_file()
468 tap = idr_find(&tap_major->minor_idr, minor); in dev_get_by_tap_file()
473 spin_unlock(&tap_major->minor_lock); in dev_get_by_tap_file()
1244 struct major_info *tap_major; in tap_list_add() local
1246 tap_major = kzalloc(sizeof(*tap_major), GFP_ATOMIC); in tap_list_add()
1247 if (!tap_major) in tap_list_add()
1250 tap_major->major = MAJOR(major); in tap_list_add()
1252 idr_init(&tap_major->minor_idr); in tap_list_add()
1253 spin_lock_init(&tap_major->minor_lock); in tap_list_add()
1255 tap_major->device_name = device_name; in tap_list_add()
1257 list_add_tail_rcu(&tap_major->next, &major_list); in tap_list_add()
1261 int tap_create_cdev(struct cdev *tap_cdev, dev_t *tap_major, in tap_create_cdev() argument
1266 err = alloc_chrdev_region(tap_major, 0, TAP_NUM_DEVS, device_name); in tap_create_cdev()
1272 err = cdev_add(tap_cdev, *tap_major, TAP_NUM_DEVS); in tap_create_cdev()
1276 err = tap_list_add(*tap_major, device_name); in tap_create_cdev()
1285 unregister_chrdev_region(*tap_major, TAP_NUM_DEVS); in tap_create_cdev()
1293 struct major_info *tap_major, *tmp; in tap_destroy_cdev() local
1297 list_for_each_entry_safe(tap_major, tmp, &major_list, next) { in tap_destroy_cdev()
1298 if (tap_major->major == MAJOR(major)) { in tap_destroy_cdev()
1299 idr_destroy(&tap_major->minor_idr); in tap_destroy_cdev()
1300 list_del_rcu(&tap_major->next); in tap_destroy_cdev()
1301 kfree_rcu(tap_major, rcu); in tap_destroy_cdev()