gsmld_read(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… gsmld_read(9) β€” like, the read function for tty, bestie

okay so real quick before we dive in: this is a page from the Kernel API Manual, section 9. Yes, the kernel. Yes, the real one. Buckle up πŸŽ€


✨ NAME ✨

gsmld_read β€” the read function for tty. that's it, that's the whole vibe 🌸


✨ SYNOPSIS ✨

ssize_t gsmld_read (struct tty_struct *tty , struct file *file , u8 *buf
, size_t nr , void **cookie , unsigned long offset );

🫢 ARGUMENTS 🫢

  • tty β€” the tty device. bestie's whole personality, lowkey πŸ’–
  • file β€” the file object πŸŽ€
  • buf β€” a userspace buffer pointer ✨
  • nr β€” size of I/O 🌸
  • cookie β€” unused πŸ“
  • offset β€” unused πŸ“ (twins! both unused, iconic)

πŸ”₯ DESCRIPTION πŸ”₯

okay so this is where we do reads for the line discipline. and hear me out, the guarantees are kinda giving safety net: we are guaranteed that the line discipline will not be closed under us 😭🫢 but bestie, we may get multiple parallel readers and we must handle this ourselves. no cap. and we may also get a hangup. oh and it's always called in user context, and it may sleep. so like, plan accordingly πŸ’…

🚨 also real talk: this code must be sure never to sleep through a hangup. not a drill, fr fr πŸ’€

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./drivers/tty/n_gsm.c β€” and now the friend group, and yes you're gonna meet all of them, we don't leave anyone out πŸ’œ:

gsm_fcs_add(9), gsm_fcs_add_block(9), gsm_read_ea(9), gsm_read_ea_val(9), gsm_encode_modem(9), gsm_encode_params(9), gsm_register_devices(9), gsm_unregister_devices(9), gsm_print_packet(9), gsm_stuff_frame(9), gsm_send(9), gsm_dlci_clear_queues(9), gsm_response(9), gsm_command(9), gsm_data_alloc(9), gsm_send_packet(9), gsm_is_flow_ctrl_msg(9), gsm_data_kick(9), __gsm_data_queue(9), gsm_data_queue(9), gsm_dlci_data_output(9), gsm_dlci_data_output_framed(9), gsm_dlci_modem_output(9), gsm_dlci_data_sweep(9), gsm_dlci_data_kick(9), gsm_control_command(9), gsm_control_reply(9), gsm_process_modem(9), gsm_process_negotiation(9), gsm_control_modem(9), gsm_control_negotiation(9), gsm_control_rls(9), gsm_control_message(9), gsm_control_response(9), gsm_control_keep_alive(9), gsm_control_transmit(9), gsm_control_retransmit(9), gsm_control_send(9), gsm_control_wait(9), gsm_dlci_close(9), gsm_dlci_open(9), gsm_dlci_negotiate(9), gsm_dlci_t1(9), gsm_dlci_begin_open(9), gsm_dlci_set_opening(9), gsm_dlci_set_wait_config(9), gsm_dlci_begin_close(9), gsm_dlci_data(9), gsm_dlci_command(9), gsm_kick_timer(9), gsm_dlci_copy_config_values(9), gsm_dlci_config(9), gsm_dlci_alloc(9), gsm_dlci_free(9), gsm_dlci_release(9), gsm_queue(9), gsm0_receive_state_check_and_fix(9), gsm0_receive(9), gsm1_receive_state_check_and_fix(9), gsm1_receive(9), gsm_error(9), gsm_cleanup_mux(9), gsm_activate_mux(9), gsm_free_mux(9), gsm_free_muxr(9), gsm_alloc_mux(9), gsmld_output(9), gsmld_write_trigger(9), gsmld_write_task(9), gsmld_attach_gsm(9), gsmld_detach_gsm(9), gsmld_flush_buffer(9), gsmld_close(9), gsmld_open(9), gsmld_write_wakeup(9), gsmld_write(9), gsmld_poll(9), gsm_modem_upd_via_data(9), gsm_modem_upd_via_msc(9), gsm_modem_update(9), gsm_wait_modem_change(9)

like I said. the whole group chat πŸ’…βœ¨


okay that's the page, mwah πŸ’– this little masterpiece lives in ./drivers/tty and it's dated October 2026 β€” so yeah, future-core of it all, periodt πŸ‘‘πŸ¦‹

πŸ“¦ where this page comes from