tty_release(9)
π tty_release(9) π
okay bestie come CLOSE-r, we're looking at a page from the Kernel API Manual and it's lowkey iconic π
β¨ NAME β¨
tty_release β the vfs callback for close, periodt π«Ά
πΈ SYNOPSIS πΈ
int tty_release (struct inode *inode , struct file *filp );
like, that's the whole signature, no cap β¨
π¦ ARGUMENTS π¦
inodeβ the inode of the tty πfilpβ the file pointer for the handle to the tty π
π DESCRIPTION π
So this one gets called the last time each file handle is closed that references this tty β but bestie, heads up: there may however be several such references π like it's not necessarily the very last one ever, iykyk.
Locking: it takes BKL. see tty_release_dev. π₯
ngl, even releasing the tty structures is a tricky business π we have to be very careful that the structures are all released at the same time, because interrupts might otherwise get the wrong pointers. like genuinely, that's the vibe check that matters here π
WSH 09/09/97: rewritten to avoid some nasty race conditions that could lead to double frees or releasing memory still in use. not me fixing double frees in '97, king behaviour π
π SEE ALSO π
Kernel file ./drivers/tty/tty_io.c β and then the whole extended friend group π«Ά:
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_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_register_device_attr(9),tty_unregister_device(9),__tty_alloc_driver(9),tty_driver_kref_put(9),tty_register_driver(9),tty_unregister_driver(9)
and that's the page, bestie π this lil gem lives in ./drivers/tty and it's dated October 2026 β mwah, slay, go close some file handles responsibly π§ββοΈπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms