free_tty_struct(9)
π free_tty_struct β the kernel API manual, bestie edition β¨
okay so you found yourself in section 9 of the kernel manual, which means you're doing kernel stuff, which means you're kind of a big deal. this page is free_tty_struct(9) and it's lowkey the cleanup crew of the tty world. let's get into it π«Ά
πΈ NAME πΈ
free_tty_struct β free a disused tty. that's it. that's the whole vibe. it takes a tty that nobody's using anymore and lets it go π
β¨ SYNOPSIS β¨
void free_tty_struct (struct tty_struct *tty );
so iconic. returns void, takes exactly one pointer, no drama, no extra args, no surprises π
π ARGUMENTS π
ttyβ the tty struct to free. yeah. the one you're done with. hand it over π
π¦ DESCRIPTION π¦
okay so here's what's actually going down, no cap:
it frees the write buffers, it frees the tty queue, and then it frees the tty memory itself. the whole thing. the buffers, the queue, and the memory β all three, bestie. it's giving full cleanup, main character energy, nothing left behind β¨
Locking: none. and that's not me being chill, that's the manual being chill. also β it must be called after the tty is definitely unused. definitely. like, definitely definitely. not "probably", not "i think so", not "it looked idle a second ago". if something's still touching that tty, that's on you π this is the part where you double-check, fr fr π
π SEE ALSO π
there's a lot of friends on this list and honestly they all ate π
the source, first of all:
- Kernel file
./drivers/tty/tty_io.c
the tty gang:
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_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)
like i said. a lot of friends. iykyk π
πΈ and that's the whole page, bestie πΈ
this one lives under ./drivers/tty and it's dated October 2026 β so like, future energy but make it kernel docs β go forth, free your ttys responsibly, and remember the locking note (there isn't one, which is exactly why you gotta be sure) π§ββοΈπ
π¦ 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