es58x_alloc_urb(9)
π es58x_alloc_urb(9) π
okay bestie, welcome to the es58x_alloc_urb page β it's a Kernel API Manual moment, and yes we're reading kernel API docs together, this is our life now π
β¨ NAME β¨
es58x_alloc_urb β allocate memory for an URB and its transfer buffer. two-for-one slay π
πΈ SYNOPSIS πΈ
int es58x_alloc_urb (struct es58x_device *es58x_dev , struct urb **urb ,
u8 **buf , size_t buf_len , gfp_t mem_flags );
π¦ ARGUMENTS π¦
es58x_devβ the ES58X device itself. the main character of this whole operation πurbβ the URB that's gonna get allocated. that's the whole point, lowkey.bufβ this one's used to return the DMA address of the buffer. it's a return channel disguised as an argument, iconic behavior tbh β¨buf_lenβ the buffer size you're requesting. how much room do we need, bestie?mem_flagsβ these affect whether the allocation is allowed to block. like, can it chill and wait, or nah? π΄
π DESCRIPTION π
So what does it actually do? It allocates an URB and its transfer_buffer, and then it sets the transfer_dma address. all three, one function, no cap π«Ά
Where do we use it? Two places, fr fr:
- at start-up, to allocate all the RX URBs at once (bulk girlie behavior, we love efficiency)
- during run time, for TX URBs
π₯ RETURN π₯
zeroon success β we love a win π-ENOMEMif no memory is available β π the allocation said no
π SEE ALSO π
The kernel file lives at ./drivers/net/can/usb/etas_es58x/es58x_core.c β go peek, iykyk π
And here's the whole friend group, everyone's invited to the group chat:
es58x_calculate_crc(9)βes58x_get_crc(9)βes58x_set_crc(9)βes58x_check_crc(9)es58x_timestamp_to_ns(9)βes58x_set_skb_timestamp(9)βes58x_rx_timestamp(9)es58x_set_realtime_diff_ns(9)es58x_is_can_state_active(9)βes58x_is_echo_skb_threshold_reached(9)es58x_can_free_echo_skb_tail(9)βes58x_can_get_echo_skb_recovery(9)βes58x_can_get_echo_skb(9)βes58x_can_reset_echo_fifo(9)es58x_flush_pending_tx_msg(9)βes58x_tx_ack_msg(9)es58x_rx_can_msg(9)βes58x_rx_err_msg(9)es58x_cmd_ret_desc(9)βes58x_rx_cmd_ret_u8(9)βes58x_rx_cmd_ret_u32(9)es58x_increment_rx_errors(9)es58x_handle_urb_cmd(9)βes58x_check_rx_urb(9)βes58x_copy_to_cmd_buf(9)es58x_split_urb_try_recovery(9)βes58x_handle_incomplete_cmd(9)βes58x_split_urb(9)es58x_read_bulk_callback(9)βes58x_write_bulk_callback(9)es58x_get_tx_urb(9)βes58x_submit_urb(9)βes58x_send_msg(9)es58x_alloc_rx_urbs(9)βes58x_free_urbs(9)es58x_open(9)βes58x_stop(9)es58x_xmit_commit(9)βes58x_xmit_more(9)βes58x_start_xmit(9)es58x_set_mode(9)es58x_init_priv(9)βes58x_init_netdev(9)βes58x_free_netdevs(9)βes58x_init_es58x_dev(9)es58x_probe(9)βes58x_disconnect(9)
π‘ reminder bestie: this is a Kernel API Manual page, so everything above is fr fr official β don't go inventing behavior on me π
and that's the page!! π this lil drop ships from ./drivers/net/can/usb/etas_es58x, dated October 2026, and it's literally called es58x_alloc_urb(9). go read some more kernel docs, bestie, you're doing amazing π§ββοΈπ
π¦ 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