tiocsti(9)
π
tiocsti(9) β from the Kernel API Manual
okay so bestie, pull up a chair because today we're looking at tiocsti(9), a lil kernel API page that is literally about faking keyboard input, and honestly? kinda iconic behavior π no cap.
β¨ NAME β¨
tiocsti β fake input character π«Ά
πΈ SYNOPSIS πΈ
int tiocsti (struct tty_struct *tty , u8 __user *p );
that's it. that's the whole signature. slay π
π¦ ARGUMENTS π¦
ttyβ the tty you wanna fake input into, bestie. that's the target π―pβ a pointer to the character. like, the actual char vibe you're injecting β¨
π DESCRIPTION π
so what does it do?? it fakes input to a tty device π and like, it handles all the necessary locking and input management for you, which is highkey the whole point. you don't gotta worry about that part, it's giving responsible main character energy π
FIXME: does not honour flow control ?? ππ yeah that's a real note in the original, not me being messy fr fr. just know the flow control situation is, uh, unaddressed π
π Locking (the important bits, don't skip)
- called functions take
tty_ldiscs_lockβ that's the lock situation, respect it π - the
current->signal->ttycheck is safe without locks, so no lock needed there, periodt β¨
π SEE ALSO π
kernel file ./drivers/tty/tty_io.c β and like, literally the entire tty cinematic universe, iykyk π:
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)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. the whole universe. go read 'em all, bestie, or at least the ones that matter to ur use case π§π
aaaand that's the page!! π this lil beauty lives in ./drivers/tty, dated October 2026, and it's filed under tiocsti(9) β so go fake some input, stay locked, and don't forget the flow control FIXME, mwah πβ¨
π¦ 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