write_ep0_fifo(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ write_ep0_fifo β€” Kernel API Manual ✨

okay so bestie, welcome to the write_ep0_fifo page πŸ’… this one lives in the Kernel API Manual, and it's all about shoving a request at the control endpoint. very ep0-in core, very main character πŸ’–


🌸 NAME 🌸

write_ep0_fifo β€” send a request to the control endpoint (ep0 in) πŸŽ€

✨ SYNOPSIS ✨

int write_ep0_fifo (struct pxa_ep *ep , struct pxa27x_request *req );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • ep β€” the control endpoint. that's the one.
  • req β€” the request. the thing we're sending.

πŸ’… CONTEXT πŸ’…

interrupt handler ✨ no cap, that's where this runs.

πŸ”₯ DESCRIPTION πŸ”₯

so what it does: it sends a request (or honestly just a part of the request, we're not gonna pretend it's always the whole thing) to the control endpoint β€” that's ep0 in πŸ’–

and lowkey the important bit: if the request doesn't fit, the remaining part gets sent from irq later. the way that works is it just picks up where it left off 🫢

ngl the request only counts as fully written if one of these two things is true:

  • the last write transferred all remaining bytes, but the fifo was not fully filled ✨
  • the last write was a 0 length write πŸ’€ (yes really, that's a legit finish)

and the return vibes:

  • returns 1 if the request is fully written πŸ‘‘
  • returns 0 if the request was only partially sent πŸ™ˆ

🌈 SEE ALSO 🌈

okay this list is long long, buckle up bestie 🎒 the kernel file is ./drivers/usb/gadget/udc/pxa27x_udc.c and it's giving "everyone in the group chat is tagged" energy:

is_match_usb_pxa(9), find_pxa_ep(9), update_pxa_ep_matches(9), pio_irq_enable(9), pio_irq_disable(9), udc_set_mask_UDCCR(9), udc_clear_mask_UDCCR(9), ep_write_UDCCSR(9), ep_count_bytes_remain(9), ep_is_empty(9), ep_is_full(9), epout_has_pkt(9), set_ep0state(9), ep0_idle(9), inc_ep_stats_reqs(9), inc_ep_stats_bytes(9), pxa_ep_setup(9), pxa_eps_setup(9), pxa_ep_alloc_request(9), pxa_ep_free_request(9), ep_add_request(9), ep_del_request(9), req_done(9), ep_end_out_req(9), ep0_end_out_req(9), ep_end_in_req(9), ep0_end_in_req(9), nuke(9), read_packet(9), write_packet(9), read_fifo(9), write_fifo(9), read_ep0_fifo(9), pxa_ep_queue(9), pxa_ep_dequeue(9), pxa_ep_set_halt(9), pxa_ep_fifo_status(9), pxa_ep_fifo_flush(9), pxa_ep_enable(9), pxa_ep_disable(9), dplus_pullup(9), pxa_udc_get_frame(9), pxa_udc_wakeup(9), should_enable_udc(9), should_disable_udc(9), pxa_udc_pullup(9), pxa_udc_vbus_session(9), pxa_udc_vbus_draw(9), pxa_udc_phy_event(9), udc_disable(9), udc_init_data(9), udc_enable(9), pxa27x_udc_start(9), stop_activity(9), pxa27x_udc_stop(9), handle_ep0_ctrl_req(9), handle_ep0(9), handle_ep(9), pxa27x_change_configuration(9), pxa27x_change_interface(9), irq_udc_suspend(9), irq_udc_resume(9), irq_udc_reconfig(9), irq_udc_reset(9), pxa_udc_irq(9), pxa_udc_probe(9), pxa_udc_remove(9), pxa_udc_suspend(9), pxa_udc_resume(9)


okay and the lil sign-off πŸŽ€ this page is from ./drivers/usb/gadget/udc, dated October 2026, and the source/version tag on it is write_ep0_fifo(9) β€” slay, go read some kernel code bestie πŸ’œπŸ¦‹

πŸ“¦ where this page comes from