netdev_lowe..._private_rcu(9)
π netdev_lowe..._private_rcu(9) π
okay so bestie, we're deep in the Kernel API Manual today β yes, the Kernel API Manual, we're doing big-girl kernel things now π and this one is a lil' RCU-flavoured neighbour-list iterator. it's giving "walk the lower neighbour list, but make it atomic-adjacent". stay with me, it's actually so good π
β¨ NAME β¨
netdev_lower_get_next_private_rcu β grab the next ->private off the lower neighbour list, but the RCU variant, so like, the chill lock-free one π¦
πΈ SYNOPSIS πΈ
void * netdev_lower_get_next_private_rcu (struct net_device *dev ,
struct list_head **iter );
π«Ά ARGUMENTS π«Ά
devβ the device. your main character. the netdev we're snooping around in πiterβ alist_head **, i.e. a double pointer to wherever you're currently sitting in the list. it's literally your little bookmark π
π DESCRIPTION π
So what it actually does: it gets you the next netdev_adjacent->private from dev's lower neighbour list, starting from the iter position you hand it. very "continue where u left off" energy β¨
β οΈ and this is the important bit, bestie β the caller must hold the RCU read lock. no cap. that's not a suggestion, that's the whole contract ππ
π₯ SEE ALSO π₯
we are not linking you just one friend, we're linking you the whole group chat. Kernel file ./net/core/dev.c, plus this entire roster π:
dev_add_pack(9)__dev_remove_pack(9)dev_remove_pack(9)dev_get_iflink(9)dev_fill_metadata_dst(9)netdev_napi_by_id_lock(9)__dev_get_by_name(9)dev_get_by_name_rcu(9)netdev_get_by_name(9)__dev_get_by_index(9)dev_get_by_index_rcu(9)netdev_get_by_index(9)dev_get_by_napi_id(9)netdev_get_by_index_lock(9)netdev_get_name(9)dev_getbyhwaddr_rcu(9)dev_getbyhwaddr(9)netdev_get_by_flags_rcu(9)dev_valid_name(9)__dev_alloc_name(9)dev_alloc_name(9)dev_get_alias(9)netdev_features_change(9)__netdev_notify_peers(9)netdev_notify_peers(9)dev_disable_gro_hw(9)register_netdevice_notifier(9)unregister_netdevice_notifier(9)register_netdevice_notifier_net(9)unregister_netdevice_notifier_net(9)call_netdevice_notifiers_info(9)call_netdevice_notifiers_info_robust(9)call_netdevice_notifiers(9)call_netdevice_notifiers_mtu(9)dev_forward_skb(9)dev_nit_active_rcu(9)netif_setup_tc(9)netif_set_real_num_rx_queues(9)netif_set_real_num_queues(9)netif_set_tso_max_size(9)netif_set_tso_max_segs(9)netif_inherit_tso_max(9)netif_get_num_default_rss_queues(9)netif_device_detach(9)netif_device_attach(9)dev_loopback_xmit(9)__dev_queue_xmit(9)rps_flow_is_active(9)rps_may_expire_flow(9)__netif_rx(9)netif_rx(9)netdev_is_rx_handler_busy(9)netdev_rx_handler_register(9)netdev_rx_handler_unregister(9)netif_receive_skb_core(9)netif_receive_skb(9)netif_receive_skb_list(9)__napi_schedule(9)napi_schedule_prep(9)__napi_schedule_irqoff(9)netif_threaded_enable(9)netif_queue_set_napi(9)napi_disable(9)napi_enable(9)netdev_has_upper_dev(9)netdev_has_upper_dev_all_rcu(9)netdev_has_any_upper_dev(9)netdev_master_upper_dev_get(9)netdev_has_any_lower_dev(9)netdev_upper_get_next_dev_rcu(9)netdev_lower_get_next_private(9)netdev_lower_get_next(9)netdev_lower_get_first_private_rcu(9)netdev_master_upper_dev_get_rcu(9)netdev_upper_dev_link(9)netdev_master_upper_dev_link(9)netdev_upper_dev_unlink(9)netdev_bonding_info_change(9)netdev_get_xmit_slave(9)netdev_sk_get_lowest_dev(9)netdev_lower_state_changed(9)netif_get_flags(9)netif_set_mtu_ext(9)netif_pre_changeaddr_notify(9)dev_get_phys_port_id(9)dev_get_phys_port_name(9)netif_get_port_parent_id(9)netdev_port_same_parent_id(9)netdev_change_proto_down_reason_locked(9)dev_change_xdp_fd(9)dev_index_reserve(9)netdev_update_features(9)netdev_change_features(9)netif_stacked_transfer_operstate(9)register_netdevice(9)register_netdev(9)netdev_wait_allrefs_any(9)dev_get_stats(9)dev_fetch_sw_netstats(9)dev_get_tstats64(9)netdev_sw_irq_coalesce_default_on(9)alloc_netdev_mqs(9)free_netdev(9)alloc_netdev_dummy(9)synchronize_net(9)unregister_netdevice_queue(9)unregister_netdevice_many(9)unregister_netdev(9)netdev_increment_features(9)netdev_compute_master_upper_features(9)netdev_drivername(9)
and that's the whole page, bestie β go hold that RCU read lock and iterate responsibly π β¨
this icon of a manpage lives in ./net/core, October 2026 edition, and honestly? it ate. periodt π«Άπ
π¦ 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