• Home
  • Raw
  • Download

Lines Matching refs:driver

250 #define TTY_NUMBER(tty) ((tty)->index + (tty)->driver->name_base)
305 if (tty->driver->type == TTY_DRIVER_TYPE_PTY && in check_tty_count()
306 tty->driver->subtype == PTY_TYPE_SLAVE && in check_tty_count()
847 if (on_exit && tty->driver->type != TTY_DRIVER_TYPE_PTY) { in disassociate_ctty()
1207 tty->driver->name); in tty_write()
1249 static void pty_line_name(struct tty_driver *driver, int index, char *p) in pty_line_name() argument
1251 int i = index + driver->name_base; in pty_line_name()
1254 driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name, in pty_line_name()
1269 static void tty_line_name(struct tty_driver *driver, int index, char *p) in tty_line_name() argument
1271 if (driver->flags & TTY_DRIVER_UNNUMBERED_NODE) in tty_line_name()
1272 strcpy(p, driver->name); in tty_line_name()
1274 sprintf(p, "%s%d", driver->name, index + driver->name_base); in tty_line_name()
1288 static struct tty_struct *tty_driver_lookup_tty(struct tty_driver *driver, in tty_driver_lookup_tty() argument
1291 if (driver->ops->lookup) in tty_driver_lookup_tty()
1292 return driver->ops->lookup(driver, inode, idx); in tty_driver_lookup_tty()
1294 return driver->ttys[idx]; in tty_driver_lookup_tty()
1310 if (tty->driver->flags & TTY_DRIVER_RESET_TERMIOS) in tty_init_termios()
1311 tty->termios = tty->driver->init_termios; in tty_init_termios()
1314 tp = tty->driver->termios[idx]; in tty_init_termios()
1318 tty->termios = tty->driver->init_termios; in tty_init_termios()
1327 int tty_standard_install(struct tty_driver *driver, struct tty_struct *tty) in tty_standard_install() argument
1333 tty_driver_kref_get(driver); in tty_standard_install()
1335 driver->ttys[tty->index] = tty; in tty_standard_install()
1352 static int tty_driver_install_tty(struct tty_driver *driver, in tty_driver_install_tty() argument
1355 return driver->ops->install ? driver->ops->install(driver, tty) : in tty_driver_install_tty()
1356 tty_standard_install(driver, tty); in tty_driver_install_tty()
1369 void tty_driver_remove_tty(struct tty_driver *driver, struct tty_struct *tty) in tty_driver_remove_tty() argument
1371 if (driver->ops->remove) in tty_driver_remove_tty()
1372 driver->ops->remove(driver, tty); in tty_driver_remove_tty()
1374 driver->ttys[tty->index] = NULL; in tty_driver_remove_tty()
1388 struct tty_driver *driver = tty->driver; in tty_reopen() local
1395 if (driver->type == TTY_DRIVER_TYPE_PTY && in tty_reopen()
1396 driver->subtype == PTY_TYPE_MASTER) { in tty_reopen()
1437 struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx) in tty_init_dev() argument
1450 if (!try_module_get(driver->owner)) in tty_init_dev()
1458 initialize_tty_struct(tty, driver, idx); in tty_init_dev()
1461 retval = tty_driver_install_tty(driver, tty); in tty_init_dev()
1466 tty->port = driver->ports[idx]; in tty_init_dev()
1470 __func__, tty->driver->name); in tty_init_dev()
1490 module_put(driver->owner); in tty_init_dev()
1508 if (tty->driver->flags & TTY_DRIVER_RESET_TERMIOS) in tty_free_termios()
1512 tp = tty->driver->termios[idx]; in tty_free_termios()
1519 tty->driver->termios[idx] = tp; in tty_free_termios()
1556 struct tty_driver *driver = tty->driver; in release_one_tty() local
1562 tty_driver_kref_put(driver); in release_one_tty()
1563 module_put(driver->owner); in release_one_tty()
1619 tty_driver_remove_tty(tty->driver, tty); in release_tty()
1641 if (idx < 0 || idx >= tty->driver->num) { in tty_release_checks()
1648 if (tty->driver->flags & TTY_DRIVER_DEVPTS_MEM) in tty_release_checks()
1651 if (tty != tty->driver->ttys[idx]) { in tty_release_checks()
1656 if (tty->driver->other) { in tty_release_checks()
1657 if (o_tty != tty->driver->other->ttys[idx]) { in tty_release_checks()
1707 pty_master = (tty->driver->type == TTY_DRIVER_TYPE_PTY && in tty_release()
1708 tty->driver->subtype == PTY_TYPE_MASTER); in tty_release()
1926 struct tty_driver *driver; in tty_lookup_driver() local
1932 driver = tty_driver_kref_get(console_driver); in tty_lookup_driver()
1941 driver = tty_driver_kref_get(console_driver); in tty_lookup_driver()
1942 if (driver) { in tty_lookup_driver()
1952 driver = get_tty_driver(device, index); in tty_lookup_driver()
1953 if (!driver) in tty_lookup_driver()
1957 return driver; in tty_lookup_driver()
1988 struct tty_driver *driver = NULL; in tty_open() local
2011 driver = tty_lookup_driver(device, filp, &noctty, &index); in tty_open()
2012 if (IS_ERR(driver)) { in tty_open()
2013 retval = PTR_ERR(driver); in tty_open()
2018 tty = tty_driver_lookup_tty(driver, inode, index); in tty_open()
2033 tty = tty_init_dev(driver, index); in tty_open()
2036 if (driver) in tty_open()
2037 tty_driver_kref_put(driver); in tty_open()
2046 if (tty->driver->type == TTY_DRIVER_TYPE_PTY && in tty_open()
2047 tty->driver->subtype == PTY_TYPE_MASTER) in tty_open()
2101 if (!IS_ERR_OR_NULL(driver)) in tty_open()
2102 tty_driver_kref_put(driver); in tty_open()
2611 if (tty->driver->flags & TTY_DRIVER_HARDWARE_BREAK) in send_break()
2714 if (tty->driver->type == TTY_DRIVER_TYPE_PTY && in tty_pair_get_tty()
2715 tty->driver->subtype == PTY_TYPE_MASTER) in tty_pair_get_tty()
2723 if (tty->driver->type == TTY_DRIVER_TYPE_PTY && in tty_pair_get_pty()
2724 tty->driver->subtype == PTY_TYPE_MASTER) in tty_pair_get_pty()
3029 struct tty_driver *driver, int idx) in initialize_tty_struct() argument
3048 tty->driver = driver; in initialize_tty_struct()
3049 tty->ops = driver->ops; in initialize_tty_struct()
3051 tty_line_name(driver, idx, tty->name); in initialize_tty_struct()
3091 static int tty_cdev_add(struct tty_driver *driver, dev_t dev, in tty_cdev_add() argument
3095 cdev_init(&driver->cdevs[index], &tty_fops); in tty_cdev_add()
3096 driver->cdevs[index].owner = driver->owner; in tty_cdev_add()
3097 return cdev_add(&driver->cdevs[index], dev, count); in tty_cdev_add()
3119 struct device *tty_register_device(struct tty_driver *driver, unsigned index, in tty_register_device() argument
3122 return tty_register_device_attr(driver, index, device, NULL, NULL); in tty_register_device()
3152 struct device *tty_register_device_attr(struct tty_driver *driver, in tty_register_device_attr() argument
3158 dev_t devt = MKDEV(driver->major, driver->minor_start) + index; in tty_register_device_attr()
3163 if (index >= driver->num) { in tty_register_device_attr()
3169 if (driver->type == TTY_DRIVER_TYPE_PTY) in tty_register_device_attr()
3170 pty_line_name(driver, index, name); in tty_register_device_attr()
3172 tty_line_name(driver, index, name); in tty_register_device_attr()
3174 if (!(driver->flags & TTY_DRIVER_DYNAMIC_ALLOC)) { in tty_register_device_attr()
3175 retval = tty_cdev_add(driver, devt, index, 1); in tty_register_device_attr()
3204 cdev_del(&driver->cdevs[index]); in tty_register_device_attr()
3220 void tty_unregister_device(struct tty_driver *driver, unsigned index) in tty_unregister_device() argument
3223 MKDEV(driver->major, driver->minor_start) + index); in tty_unregister_device()
3224 if (!(driver->flags & TTY_DRIVER_DYNAMIC_ALLOC)) in tty_unregister_device()
3225 cdev_del(&driver->cdevs[index]); in tty_unregister_device()
3241 struct tty_driver *driver; in __tty_alloc_driver() local
3248 driver = kzalloc(sizeof(struct tty_driver), GFP_KERNEL); in __tty_alloc_driver()
3249 if (!driver) in __tty_alloc_driver()
3252 kref_init(&driver->kref); in __tty_alloc_driver()
3253 driver->magic = TTY_DRIVER_MAGIC; in __tty_alloc_driver()
3254 driver->num = lines; in __tty_alloc_driver()
3255 driver->owner = owner; in __tty_alloc_driver()
3256 driver->flags = flags; in __tty_alloc_driver()
3259 driver->ttys = kcalloc(lines, sizeof(*driver->ttys), in __tty_alloc_driver()
3261 driver->termios = kcalloc(lines, sizeof(*driver->termios), in __tty_alloc_driver()
3263 if (!driver->ttys || !driver->termios) { in __tty_alloc_driver()
3270 driver->ports = kcalloc(lines, sizeof(*driver->ports), in __tty_alloc_driver()
3272 if (!driver->ports) { in __tty_alloc_driver()
3279 driver->cdevs = kcalloc(cdevs, sizeof(*driver->cdevs), GFP_KERNEL); in __tty_alloc_driver()
3280 if (!driver->cdevs) { in __tty_alloc_driver()
3285 return driver; in __tty_alloc_driver()
3287 kfree(driver->ports); in __tty_alloc_driver()
3288 kfree(driver->ttys); in __tty_alloc_driver()
3289 kfree(driver->termios); in __tty_alloc_driver()
3290 kfree(driver); in __tty_alloc_driver()
3297 struct tty_driver *driver = container_of(kref, struct tty_driver, kref); in destruct_tty_driver() local
3301 if (driver->flags & TTY_DRIVER_INSTALLED) { in destruct_tty_driver()
3307 for (i = 0; i < driver->num; i++) { in destruct_tty_driver()
3308 tp = driver->termios[i]; in destruct_tty_driver()
3310 driver->termios[i] = NULL; in destruct_tty_driver()
3313 if (!(driver->flags & TTY_DRIVER_DYNAMIC_DEV)) in destruct_tty_driver()
3314 tty_unregister_device(driver, i); in destruct_tty_driver()
3316 proc_tty_unregister_driver(driver); in destruct_tty_driver()
3317 if (driver->flags & TTY_DRIVER_DYNAMIC_ALLOC) in destruct_tty_driver()
3318 cdev_del(&driver->cdevs[0]); in destruct_tty_driver()
3320 kfree(driver->cdevs); in destruct_tty_driver()
3321 kfree(driver->ports); in destruct_tty_driver()
3322 kfree(driver->termios); in destruct_tty_driver()
3323 kfree(driver->ttys); in destruct_tty_driver()
3324 kfree(driver); in destruct_tty_driver()
3327 void tty_driver_kref_put(struct tty_driver *driver) in tty_driver_kref_put() argument
3329 kref_put(&driver->kref, destruct_tty_driver); in tty_driver_kref_put()
3333 void tty_set_operations(struct tty_driver *driver, in tty_set_operations() argument
3336 driver->ops = op; in tty_set_operations()
3349 int tty_register_driver(struct tty_driver *driver) in tty_register_driver() argument
3356 if (!driver->major) { in tty_register_driver()
3357 error = alloc_chrdev_region(&dev, driver->minor_start, in tty_register_driver()
3358 driver->num, driver->name); in tty_register_driver()
3360 driver->major = MAJOR(dev); in tty_register_driver()
3361 driver->minor_start = MINOR(dev); in tty_register_driver()
3364 dev = MKDEV(driver->major, driver->minor_start); in tty_register_driver()
3365 error = register_chrdev_region(dev, driver->num, driver->name); in tty_register_driver()
3370 if (driver->flags & TTY_DRIVER_DYNAMIC_ALLOC) { in tty_register_driver()
3371 error = tty_cdev_add(driver, dev, 0, driver->num); in tty_register_driver()
3377 list_add(&driver->tty_drivers, &tty_drivers); in tty_register_driver()
3380 if (!(driver->flags & TTY_DRIVER_DYNAMIC_DEV)) { in tty_register_driver()
3381 for (i = 0; i < driver->num; i++) { in tty_register_driver()
3382 d = tty_register_device(driver, i, NULL); in tty_register_driver()
3389 proc_tty_register_driver(driver); in tty_register_driver()
3390 driver->flags |= TTY_DRIVER_INSTALLED; in tty_register_driver()
3395 tty_unregister_device(driver, i); in tty_register_driver()
3398 list_del(&driver->tty_drivers); in tty_register_driver()
3402 unregister_chrdev_region(dev, driver->num); in tty_register_driver()
3411 int tty_unregister_driver(struct tty_driver *driver) in tty_unregister_driver() argument
3415 if (driver->refcount) in tty_unregister_driver()
3418 unregister_chrdev_region(MKDEV(driver->major, driver->minor_start), in tty_unregister_driver()
3419 driver->num); in tty_unregister_driver()
3421 list_del(&driver->tty_drivers); in tty_unregister_driver()
3430 return MKDEV(tty->driver->major, tty->driver->minor_start) + tty->index; in tty_devnum()