tty_register_device_attr(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

Ok bestie, welcome to tty_register_device_attr(9) from the Kernel API Manual β€” we’re registering a tty device and making it make sense. πŸ’–

🌸 NAME 🌸

tty_register_device_attr β€” register a tty device, that’s literally the whole gig. πŸ’…

✨ SYNOPSIS ✨

struct device * tty_register_device_attr (struct tty_driver *driver ,
unsigned index , struct device *device , void *drvdata , const struct
attribute_group **attr_grp );

πŸŽ€ ARGUMENTS πŸŽ€

  • driver β€” the tty driver that describes the tty device. Main character energy for this call. ✨
  • index β€” the index in the tty driver for this tty device. It’s giving β€œwhich one is this?” 🎯
  • device β€” a struct device that is associated with this tty device. This field is optional, bestie: if there is no known struct device for this tty device it can be set to NULL safely. 🫢
  • drvdata β€” Driver data to be set to device. Yes, that’s the whole vibe. πŸ“
  • attr_grp β€” Attribute group to be set on device. Slay, attributes. πŸ’…

πŸ’… DESCRIPTION πŸ’…

This call is required to be made to register an individual tty device if the tty driver’s flags have the TTY_DRIVER_DYNAMIC_DEV bit set. If that bit is not set, this function should not be called by a tty driver. No cap, that’s the rule. 🚨

Locking: ??

The manpage literally says Locking: ??, and honestly same. 😭 Keep that caveat exactly as mysterious as it is.

🫢 RETURN 🫢

A pointer to the struct device for this tty device (or ERR_PTR(-EFOO) on error). On error it’s giving ERR_PTR, not β€œoopsie, try again.” πŸ”₯

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./drivers/tty/tty_io.c is the home base, and the full related-call squad is:

free_tty_struct(9), tty_free_file(9), tty_name(9), get_tty_driver(9),
tty_dev_name_to_number(9), tty_find_polling_driver(9), tty_wakeup(9),
tty_release_redirect(9), __tty_hangup(9), tty_hangup(9), tty_vhangup(9),
tty_vhangup_self(9), tty_vhangup_session(9), tty_hung_up_p(9), stop_tty(9),
start_tty(9), tty_read(9), tty_write(9), tty_send_xchar(9), pty_line_name(9),
tty_line_name(9), tty_driver_lookup_tty(9), tty_init_termios(9),
tty_standard_install(9), tty_driver_install_tty(9), tty_driver_remove_tty(9),
tty_reopen(9), tty_init_dev(9), tty_save_termios(9), tty_flush_works(9),
release_one_tty(9), tty_kref_put(9), release_tty(9), tty_release_checks(9),
tty_kclose(9), tty_release_struct(9), tty_release(9), tty_open_current_tty(9),
tty_lookup_driver(9), tty_kopen_exclusive(9), tty_kopen_shared(9),
tty_open_by_driver(9), tty_open(9), tty_poll(9), tiocsti(9), tiocgwinsz(9),
tty_do_resize(9), tiocswinsz(9), tioccons(9), tiocsetd(9), tiocgetd(9),
send_break(9), tty_get_tiocm(9), tty_tiocmget(9), tty_tiocmset(9),
tty_get_icount(9), alloc_tty_struct(9), tty_put_char(9),
tty_register_device(9), tty_unregister_device(9), __tty_alloc_driver(9),
tty_driver_kref_put(9), tty_register_driver(9), tty_unregister_driver(9)

Bye bestie 🫢 β€” this one’s from ./drivers/tty, dated October 2026, and it’s literally tty_register_device_attr(9). πŸ‘‘

πŸ“¦ where this page comes from