gsm_control_send(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… gsm_control_send(9) โ€” like, the kernel API manual, but make it cute

okay so bestie, welcome to the gsm_control_send(9) page, straight out of the Kernel API Manual ๐ŸŽ€. It's a tiny little function with big main character energy โ€” it's the one that fires off a control frame on DLCI 0. Let's get into it โœจ


๐ŸŒธ NAME ๐ŸŒธ

gsm_control_send โ€” send a control frame on DLCI 0 ๐Ÿฆ‹


โœจ SYNOPSIS โœจ

struct gsm_control * gsm_control_send (struct gsm_mux *gsm , unsigned
int command , u8 *data , int clen );

like, yes, it's one line and it's giving "short but mighty" ๐Ÿ’…


๐Ÿ’– ARGUMENTS ๐Ÿ’–

  • gsm โ€” the GSM channel. the whole vibe basically, this is your mux bestie ๐ŸŒˆ
  • command โ€” the command to send including the CR bit ๐Ÿ‘‘ (don't forget the CR bit, i'm literally begging)
  • data โ€” the bytes of data. and listen โ€” it must be kmalloced ๐Ÿ˜ญ no cap, that's a hard requirement
  • clen โ€” length of the block to send, as a number ๐Ÿ“

๐Ÿ”ฅ DESCRIPTION ๐Ÿ”ฅ

Queue and dispatch a control command. that's the whole job, and she does it ๐Ÿซถ

Only one command can be active at a time. In theory more can be outstanding โ€” like, sure, mathematically, the universe allows it ๐ŸŒŒ โ€” but the matching gets really complicated, so for now stick to one outstanding. periodt. ๐Ÿ’€

honestly this is a "trust the process" situation. one command at a time. the matching stays sane. we stay sane. everybody wins โœจ

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

literally the whole n_gsm.c friend group, head to the Kernel file ./drivers/tty/n_gsm.c ๐Ÿ’œ, and then:

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_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_read(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, that's the entire group chat, and yes, they all get a mention ๐Ÿ’…โœจ


๐ŸŽ€ sign-off ๐ŸŽ€

okay so this lil page lives in ./drivers/tty (the source/version bit, iykyk), and it's dated October 2026 โ€” future-coded of her ngl ๐Ÿ”ฎ. that's the whole footer, folded into a cute bye-bye instead of a boring line, because we don't do boring here ๐Ÿ˜Œ๐Ÿ’–

go send exactly one control frame bestie, you're gonna slay ๐Ÿฆ‹๐ŸŒธ

๐Ÿ“ฆ where this page comes from