MAKEFILE(9)

๐Ÿ“ฆ
version 11.0 ยท 3 versions
, in nixpkgs unstable

๐Ÿ’… makefile(9) ๐Ÿ’…

okay so bestie, this is the NetBSD section 9 makefile โ€” the one that builds all the kernel function and variable manual pages. it's not a manpage about a function, it's the literal build list, and it is long. like, "five parts" long. this is part 1 and we're just getting warmed up ๐Ÿ’–

here's the header it carries around, no cap:

$NetBSD: Makefile,v 1.474.2.1 2025/10/19 10:29:19 martin Exp $

and the line right under it says what this whole thing is:

Makefile for section 9 (kernel function and variable) manual pages.

that's the vibe. kernel stuff. functions. variables. the whole section 9 buffet. ๐Ÿ“


๐ŸŽ€ the header bits ๐ŸŽ€

so the first thing in the file is that $NetBSD: RCS line โ€” revision 1.474.2.1, dated 2025/10/19 10:29:19, committed by martin. that's the โœจprovenanceโœจ, we respect her.

then comes the comment that spells out the job: it's the makefile for section 9, covering kernel function and variable manual pages. that's it, that's the mission statement, and honestly? main character energy. ๐Ÿ‘‘


๐Ÿ’– MAN= โ€” the whole roster ๐Ÿ’–

this is the big one. the master list. every single page that ships with section 9 is named in here, in order, and there are so many of them. the way this list just goes on ๐Ÿ˜ญ

lowkey important detail: the MAN+= and MLINKS+= lines for secmodel_securelevel.9 and secmodel_suser.9 are sitting right in the middle of the roster. not a typo, not me being chaotic โ€” that's literally how it's written. canon. ๐Ÿซถ

here's the whole thing, exactly as it appears:

MAN=    accept_filter.9 accf_data.9 accf_http.9 acl.9
    acct_process.9 altq.9 arp.9 audio.9 autoconf.9 bcdtobin.9
    bcmp.9 bcopy.9 bintime_add.9 bluetooth.9 boothowto.9 bpf.9
    buffercache.9 bufferio.9 bufq.9 bus_dma.9 bus_space.9 byteorder.9
    bzero.9 callback.9 callout.9 cardbus.9
    clock.9 cnmagic.9 condvar.9 config.9 cons.9 copy.9 coredump_write.9
    cpu_configure.9 cpu_coredump.9 cpu_dumpconf.9
    cpu_lwp_fork.9 cpu_idle.9 cpu_initclocks.9
    cpu_need_resched.9 cpu_number.9 cpu_reboot.9 cpu_rootconf.9
    cpu_startup.9 cpu_switchto.9 cpufreq.9 crashme.9 csf.9
    ctod.9 curproc.9 ddb.9 ddc.9 delay.9 devsw_attach.9
    disk.9 disklabel.9 dksubr.9 dofileread.9 dopowerhooks.9
    do_setresuid.9 doshutdownhooks.9 driver.9 edid.9 errno.9
    ethersubr.9 evcnt.9 extattr.9 extent.9 file.9 fileassoc.9
    filedesc.9 firmload.9 flash.9 fork1.9 fsetown.9 fstrans.9
    genfs.9 genfs_can_access.9 genfs_can_access_acl_nfs4.9
    genfs_can_access_acl_posix1e.9 genfs_rename.9 hardclock.9
    hash.9 hashinit.9 heartbeat.9 humanize_number.9 hz.9
    ieee80211.9 ieee80211_crypto.9 ieee80211_input.9
    ieee80211_ioctl.9 ieee80211_node.9 ieee80211_output.9
    ieee80211_proto.9 ieee80211_radiotap.9 iic.9 imax.9
    in_getifa.9 in4_cksum.9 inittodr.9 interrupt_distribute.9
    intro.9 ioasic.9 ioctl.9 ipi.9 isa.9 isapnp.9 itimerfix.9
    kauth.9 kcopy.9 kcpuset.9 kernhist.9 klua_lock.9 klua_mod_register.9
    kmem.9 kpause.9 kfilter_register.9 knote.9 kprintf.9
    kthread.9 linedisc.9 lock.9 locking.9 log.9 ltsleep.9 localcount.9
    LWP_CACHE_CREDS.9 makeiplcookie.9 malloc.9
    mbuf.9 mca.9 memcmp.9 memcpy.9 memoryallocators.9 memmove.9
    memset.9 microseq.9 microtime.9 microuptime.9 mi_switch.9 module.9
    mstohz.9 mutex.9 m_tag.9 namecache.9 namei.9 nullop.9
    opencrypto.9 optstr.9 panic.9 paravirt_membar_sync.9
    pathbuf.9 pci.9 pci_configure_bus.9
    pci_intr.9 pci_msi.9 pckbport.9 pcmcia.9 pcq.9 pcu.9
    percpu.9 pfil.9 physio.9 pktqueue.9 pmap.9 pmatch.9 pmf.9
    pool.9 pool_cache.9 portfeatures.9 powerhook_establish.9
    ppsratecheck.9 preempt.9 proc_find.9 pserialize.9 pslist.9
    psref.9 putter.9 radio.9 ras.9 rasops.9 ratecheck.9 resettodr.9
    rnd.9 roundup.9 rssadapt.9 rt_timer.9 rwlock.9
    RUN_ONCE.9 STACK.9 scanc.9 sched_4bsd.9 sched_m2.9
    scsipi.9 secmodel_bsd44.9 secmodel_extensions.9 secmodel_overlay.9

MAN+=    secmodel_securelevel.9
MLINKS+=    secmodel_securelevel.9 securelevel.9
MAN+=    secmodel_suser.9

    SET.9 setbit.9 setjmp.9 shutdownhook_establish.9 signal.9
    skpc.9 sockopt.9 softintr.9 spl.9 specificdata.9 spi.9
    splraiseipl.9 strlist.9 suspendsched.9 sysctl.9
    sysmon_envsys.9 sysmon_pswitch.9 sysmon_taskq.9 tc.9 tcp_connctl.9
    thmap.9 threadpool.9 timecounter.9 time_second.9 todr.9
    ts2timo.9 tvtohz.9 ubc.9 ucas.9 ucom.9 ufetch.9
    uiomove.9 usbd_status.9 usbdi.9 usbnet.9 userret.9 ustore.9
    uvm.9 uvm_hotplug.9 uvm_km.9 uvm_map.9 uvm_obj_wirepages.9
    vattr.9 veriexec.9 vcons.9 versioningsyscalls.9 vfs.9
    vfs_hooks.9 vfsops.9 vfssubr.9 video.9 vme.9 vnfileops.9 vnode.9
    vnodeops.9 vnsubr.9 vmem.9 wapbl.9 wdc.9 workqueue.9
    wsbell.9 wscons.9 wsdisplay.9 wsfont.9 wskbd.9 wsmouse.9
    xcall.9 VOP_ACLCHECK.9 VOP_GETACL.9 VOP_SETACL.9

a few faves from the roster, for the vibe check:

  • crashme.9 is just right there between cpufreq.9 and csf.9 and it's iconic, we love a girl who's honest about her intentions ๐Ÿ’€
  • panic.9 and ddb.9 and lock.9 and locking.9 โ€” the drama of it all
  • intro.9 is literally the intro, doing intro things, slay
  • boothowto.9 shows up twice in this file โ€” once in MAN= up there, and again later as its own MAN+= line. she contains multitudes ๐Ÿ’…
  • LWP_CACHE_CREDS.9, RUN_ONCE.9, STACK.9, SET.9 โ€” the all-caps girlies, highkey intimidating

okay so from here on it's a parade of MAN+= (add this page) and MLINKS+= (pair this page with another name) groups. and bestie, the sizes range from "one entry" to "bus_space going absolutely feral". let's go ๐Ÿฆ‹


๐Ÿฆ‹ __cpu_simple_lock.9

MAN+= __cpu_simple_lock.9 and then a whole pile of aliases, all paired back to __cpu_simple_lock.9:

__SIMPLELOCK_LOCKED_P.9
__SIMPLELOCK_UNLOCKED_P.9
__cpu_simple_lock_clear.9
__cpu_simple_lock_init.9
__cpu_simple_lock_set.9
__cpu_simple_lock_try.9
__cpu_simple_unlock.9

seven aliases, zero chill, and yes every single one is MLINKS+=__cpu_simple_lock.9 <name>. ๐Ÿ˜Œ


๐Ÿฆ‹ atomic_loadstore.9

MAN+= atomic_loadstore.9, and every alias hangs off atomic_loadstore.9:

atomic_load_acquire.9
atomic_load_consume.9
atomic_load_relaxed.9
atomic_store_relaxed.9
atomic_store_release.9

loads and stores, acquire to release, the full set. periodt. โš›๏ธ


๐Ÿฆ‹ boothowto.9

  • MLINKS+=boothowto.9 BOOT_FLAG.9

one line. that's it. MAN+= boothowto.9 plus exactly one link to BOOT_FLAG.9. tiny, but mighty. ๐ŸŽ€


๐Ÿฆ‹ cprng.9

MAN+= cprng.9 and this girl brought friends. every alias below is paired with cprng.9:

cprng_strong.9
cprng_strong_create.9
cprng_strong_destroy.9
cprng_strong32.9
cprng_strong64.9
cprng_fast.9
cprng_fast32.9
cprng_fast64.9
arc4random.9
arc4randbytes.9
rnd_extract_data.9

strong, fast, 32, 64, plus the arc4 crowd and rnd_extract_data.9 riding along. obsessed. ๐Ÿ”ฅ


๐Ÿฆ‹ deviter.9

MAN+= deviter.9, aliases all hung off deviter.9:

deviter_first.9
deviter_init.9
deviter_next.9
deviter_release.9

first, init, next, release โ€” a whole little lifecycle happening. ๐Ÿซถ


๐Ÿฆ‹ dmover.9

MAN+= dmover.9, and the aliases (each MLINKS+=dmover.9 <name>) are:

dmover_backend_register.9
dmover_backend_unregister.9
dmover_session_create.9
dmover_session_destroy.9
dmover_request_alloc.9
dmover_request_free.9
dmover_process.9
dmover_done.9

register/unregister, create/destroy, alloc/free โ€” look at all those matched pairs, it's giving symmetry โœจ


๐Ÿฆ‹ CTASSERT.9 and KASSERT.9

  • MAN+= CTASSERT.9 โ€” just her, standing alone, no links needed.
  • MAN+= KASSERT.9 โ€” and KASSERT.9 gets a squad:
KASSERTMSG.9
KDASSERT.9
KDASSERTMSG.9

each one is MLINKS+=KASSERT.9 <name>. all the assert flavours, fr fr.


๐Ÿฆ‹ KERNEL_LOCK.9

MAN+= KERNEL_LOCK.9, and the linked names (all MLINKS+=KERNEL_LOCK.9 <name>) are:

KERNEL_LOCKED_P.9
KERNEL_UNLOCK_ALL.9
KERNEL_UNLOCK_LAST.9
KERNEL_UNLOCK_ONE.9

lock it, check if it's locked, unlock all of it, unlock the last one, unlock one โ€” the whole emotional arc ๐Ÿ˜ญ


๐Ÿฆ‹ accept_filter.9

four MLINKS+= lines, each one accept_filter.9 plus an alias:

accept_filt_add.9
accept_filt_del.9
accept_filt_generic_mod_event.9
accept_filt_get.9

note the spelling drop โ€” accept_filter.9 the page, accept_filt_* the names. that's not a typo, that's just how she's built ๐Ÿ’…


๐Ÿฆ‹ arp.9

  • MLINKS+=arp.9 arp_ifinit.9
  • MLINKS+=arp.9 arpresolve.9
  • MLINKS+=arp.9 arpintr.9

three lines, three links, one arp.9 doing all the work. ๐ŸŒˆ


๐Ÿฆ‹ autoconf.9

autoconf.9 is the page, and every alias below is paired with it:

config_search.9
config_found.9
config_match.9
config_attach.9
config_attach_pseudo.9
config_detach.9
config_detach_children.9
config_detach_release.9
config_deactivate.9
config_defer.9
config_interrupts.9
config_mountroot.9
config_pending_incr.9
config_pending_decr.9
config_probe.9
config_finalize_register.9

sixteen aliases, search โ†’ found โ†’ match โ†’ attach โ†’ detach โ†’ deactivate โ†’ defer โ†’ interrupts โ†’ mountroot โ†’ pending incr/decr โ†’ probe โ†’ finalize_register. the entire device-attach saga in one page. ๐Ÿ‘‘


๐Ÿฆ‹ bcdtobin.9

  • MLINKS+=bcdtobin.9 bintobcd.9

two-way street, one line. converting both directions and not bragging about it. ๐ŸŽ€


๐Ÿฆ‹ bintime_add.9

everything here pairs with bintime_add.9:

bintime_addx.9
bintime_sub.9
bintime2timespec.9
timespec2bintime.9
bintime2timeval.9
timeval2bintime.9

add, addx, sub, and all the conversions to and from timespec and timeval. math girlie hours ๐Ÿงš


๐Ÿฆ‹ buffercache.9

buffercache.9 is the page, and the aliases (each MLINKS+=buffercache.9 <name>) are:

bread.9
breada.9
breadn.9
bwrite.9
bawrite.9
bdwrite.9
getblk.9
geteblk.9
incore.9
allocbuf.9
brelse.9

read it, read it async, read it n, write it, bawrite it, bdwrite it, get the block, get the empty block, check if it's in core, alloc the buffer, release it. eleven entries and every single one is a whole mood. ๐Ÿ“š


๐Ÿฆ‹ bufferio.9

each alias is MLINKS+=bufferio.9 <name>:

biodone.9
biowait.9
getiobuf.9
putiobuf.9
nestiobuf_setup.9
nestiobuf_done.9

done, wait, get, put, setup the nest, finish the nest. clean. ๐Ÿ˜Œ


๐Ÿฆ‹ bufq.9

bufq.9 with a lot of aliases, all MLINKS+=bufq.9 <name>:

bufq_init.9
bufq_register.9
bufq_unregister.9
bufq_state.9
bufq_alloc.9
bufq_drain.9
bufq_free.9
bufq_getstrategyname.9
bufq_move.9
bufq_put.9
bufq_get.9
bufq_peek.9
bufq_cancel.9

init, register, unregister, state, alloc, drain, free, getstrategyname, move, put, get, peek, cancel. thirteen and she's not done being iconic. ๐Ÿ”ฅ


๐Ÿฆ‹ bus_space.9

okay this is the big one. bus_space.9 alone owns forty-plus aliases. every name below is an MLINKS+=bus_space.9 <name> pair:

bus_space_alloc.9
bus_space_barrier.9
bus_space_copy_region_1.9
bus_space_copy_region_2.9
bus_space_copy_region_4.9
bus_space_copy_region_8.9
bus_space_free.9
bus_space_is_equal.9
bus_space_map.9
bus_space_mmap.9
bus_space_read_1.9
bus_space_read_2.9
bus_space_read_4.9
bus_space_read_8.9
bus_space_read_multi_1.9
bus_space_read_multi_2.9
bus_space_read_multi_4.9
bus_space_read_multi_8.9
bus_space_read_region_1.9
bus_space_read_region_2.9
bus_space_read_region_4.9
bus_space_read_region_8.9
bus_space_set_region_1.9
bus_space_set_region_2.9
bus_space_set_region_4.9
bus_space_set_region_8.9
bus_space_subregion.9
bus_space_unmap.9
bus_space_vaddr.9
bus_space_write_1.9
bus_space_write_2.9
bus_space_write_4.9
bus_space_write_8.9
bus_space_write_multi_1.9
bus_space_write_multi_2.9
bus_space_write_multi_4.9
bus_space_write_multi_8.9
bus_space_write_region_1.9
bus_space_write_region_2.9
bus_space_write_region_4.9
bus_space_write_region_8.9

1, 2, 4, 8 โ€” read, write, read_multi, write_multi, read_region, write_region, set_region, copy_region. every width, every direction. she ate and left no crumbs ๐Ÿ’…


๐Ÿฆ‹ bus_dma.9

bus_dma.9, aliases all paired with her:

bus_dmamap_create.9
bus_dmamap_destroy.9
bus_dmamap_load.9
bus_dmamap_load_mbuf.9
bus_dmamap_load_uio.9
bus_dmamap_load_raw.9
bus_dmamap_unload.9
bus_dmamap_sync.9
bus_dmamem_alloc.9
bus_dmamem_free.9
bus_dmamem_map.9
bus_dmamem_unmap.9
bus_dmamem_mmap.9
bus_dmatag_subregion.9
bus_dmatag_destroy.9

map create/destroy, load (plain, mbuf, uio, raw), unload, sync, then mem alloc/free/map/unmap/mmap, then dmatag subregion/destroy. the map girlies and the mem girlies, together at last ๐Ÿซถ


๐Ÿฆ‹ byteorder.9

twenty-seven aliases, every one MLINKS+=byteorder.9 <name>. buckle up:

bswap16.9
bswap32.9
bswap64.9
be16toh.9
be32toh.9
be64toh.9
htobe16.9
htobe32.9
htobe64.9
htole16.9
htole32.9
htole64.9
le16toh.9
le32toh.9
le64toh.9
be16dec.9
be32dec.9
be64dec.9
le16dec.9
le32dec.9
le64dec.9
be16enc.9
be32enc.9
be64enc.9
le16enc.9
le32enc.9
le64enc.9

swap, beโ†’h, hโ†’be, hโ†’le, leโ†’h, then dec and enc for both endians in all three sizes. this is the most thorough girl in the whole file and she never once raises her voice ๐Ÿ‘‘โœจ


๐Ÿฆ‹ callback.9

  • MLINKS+=callback.9 callback_head_init.9
  • MLINKS+=callback.9 callback_head_destroy.9

init it, destroy it, done. two lines and we're out. ๐ŸŽ€


and that's where part 1 cuts off โ€” mid-callback.9, right on the callback_head_destroy.9 link. there's so much more coming (the bus_space of it all was just a warm-up, believe me) ๐Ÿ’–


...and we're still deep in the alias zone, bestie. Same deal as before: one page, a whole squad of names it also answers to. Every single one is written out with its .9 so nothing gets lost. Let's go ๐Ÿซถ


  • callback.9 โ€” also answers to callback_register.9 and callback_unregister.9
  • callback.9 โ€” and also callback_run_roundrobin.9 (same page, third name, she's popular)

โœจ the callout family โœจ

MLINKS+=callout.9 and honestly she ate:

  • callout.9 โ€” also known as callout_init.9, callout_destroy.9, callout_reset.9, callout_schedule.9, callout_setfunc.9, callout_stop.9, callout_pending.9, callout_expired.9, callout_invoking.9, callout_ack.9, timeout.9, untimeout.9, callout_halt.9

๐ŸŽ€ cardbus, the whole extended universe ๐ŸŽ€

  • cardbus.9 โ€” also cardbus_attach_card.9, cardbus_detach_card.9, cardbus_function_enable.9, cardbus_function_disable.9, cardbus_mapreg_map.9, cardbus_mapreg_unmap.9, cardbus_get_capability.9, cardbus_make_tag.9, cardbus_free_tag.9, cardbus_conf_read.9, cardbus_conf_write.9, cardbus_intr_establish.9, cardbus_intr_disestablish.9, CARDBUS_VENDOR.9, CARDBUS_PRODUCT.9
  • and then the capital-C twins โ€” Cardbus_function_enable.9, Cardbus_function_disable.9, Cardbus_mapreg_map.9, Cardbus_mapreg_unmap.9, Cardbus_make_tag.9, Cardbus_free_tag.9, Cardbus_conf_read.9, Cardbus_conf_write.9
yes bestie, the capitalisation matters, they are different names pointing at the same page, do not come for me ๐Ÿ’…

๐ŸŒธ clocks & consoles & condvars, oh my ๐ŸŒธ

  • clock.9 โ€” also days_in_month.9, is_leap_year.9, days_per_year.9
  • cnmagic.9 โ€” also cn_trap.9, cn_isconsole.9, cn_check_magic.9, cn_init_magic.9, cn_set_magic.9, cn_get_magic.9, cn_destroy_magic.9
  • condvar.9 โ€” also cv.9, cv_init.9, cv_destroy.9, cv_wait.9, cv_wait_sig.9, cv_timedwait.9, cv_timedwait_sig.9, cv_signal.9, cv_broadcast.9, cv_has_waiters.9
  • cons.9 โ€” also cnbell.9, cngetc.9, cngetsn.9, cnpollc.9, cnputc.9
  • copy.9 โ€” also copyin.9, copyout.9, copystr.9, copyinstr.9, copyoutstr.9, copyin_proc.9, copyout_proc.9, ioctl_copyin.9, ioctl_copyout.9

๐Ÿฆ‹ cpu_* things ๐Ÿฆ‹

  • cpu_dumpconf.9 โ€” also cpu_dump.9, cpu_dumpsize.9, dumpsys.9
  • cpu_lwp_fork.9 โ€” also child_return.9, lwp_trampoline.9
  • cpu_rootconf.9 โ€” also setroot.9, rootconf.9
  • cpufreq.9 โ€” also cpufreq_register.9, cpufreq_deregister.9, cpufreq_suspend.9, cpufreq_resume.9, cpufreq_get.9, cpufreq_get_backend.9, cpufreq_get_state.9, cpufreq_get_state_index.9, cpufreq_set.9, cpufreq_set_all.9

๐ŸŒˆ conversions & the current-everything trio ๐ŸŒˆ

  • ctod.9 โ€” also dtoc.9, ctob.9, btoc.9, dbtob.9, btodb.9
  • curproc.9 โ€” also curcpu.9, curlwp.9
  • delay.9 โ€” also DELAY.9

๐Ÿ’œ device switch, disks, disklabels ๐Ÿ’œ

  • devsw_attach.9 โ€” also devsw.9, devsw_detach.9, bdevsw_lookup.9, cdevsw_lookup.9, bdevsw_lookup_major.9, cdevsw_lookup_major.9
  • disk.9 โ€” also disk_attach.9, disk_detach.9, disk_busy.9, disk_unbusy.9, disk_find.9, disk_init.9, disk_destroy.9, disk_begindetach.9
  • disklabel.9 โ€” also readdisklabel.9, writedisklabel.9, setdisklabel.9, bounds_check_with_label.9

๐Ÿ“ dofile* / do_setres* ๐Ÿ“

  • dofileread.9 โ€” also dofilewrite.9, dofilereadv.9, dofilewritev.9
  • do_setresuid.9 โ€” also do_setresgid.9

๐Ÿงš ethernet, events, extents ๐Ÿงš

  • ethersubr.9 โ€” also ether_ifattach.9, ether_addmulti.9, ether_delmulti.9, ETHER_IS_MULTICAST.9, ETHER_FIRST_MULTI.9, ETHER_NEXT_MULTI.9
  • evcnt.9 โ€” also evcnt_attach_dynamic.9, evcnt_attach_static.9, evcnt_detach.9
  • extent.9 โ€” also extent_create.9, extent_destroy.9, extent_alloc.9, extent_alloc_subregion.9, extent_alloc_region.9, extent_free.9, extent_print.9, extent_alloc1.9, extent_alloc_subregion1.9

๐Ÿ”ฅ files, filedescs, and friends ๐Ÿ”ฅ

  • file.9 โ€” also closef.9, ffree.9, FILE_IS_USABLE.9, FILE_USE.9, FILE_UNUSE.9, FILE_SET_MATURE.9
  • filedesc.9 โ€” also falloc.9, fd_getfile.9, dupfdopen.9, fdalloc.9, fdcheckstd.9, fdclear.9, fdclone.9, fdcloseexec.9, fdcopy.9, fdexpand.9, fdfree.9, fdinit.9, fdrelease.9, fdremove.9, fdshare.9, fdunshare.9

โญ firmware, file ownership, file-system transactions โญ

  • firmload.9 โ€” also firmware_open.9, firmware_close.9, firmware_get_size.9, firmware_read.9, firmware_malloc.9, firmware_free.9
  • fsetown.9 โ€” also fgetown.9, fownsignal.9
  • fstrans.9 โ€” also fstrans_done.9, fstrans_is_owner.9, fstrans_getstate.9, fstrans_setstate.9, fstrans_start.9, fstrans_start_lazy.9, fstrans_start_nowait.9, fscow_establish.9, fscow_disestablish.9, fscow_run.9

๐Ÿ’– hashing, humanizing, hz ๐Ÿ’–

  • hash.9 โ€” also hash32_buf.9, hash32_str.9, hash32_strn.9
  • hashinit.9 โ€” also hashdone.9
  • humanize_number.9 โ€” also format_bytes.9
  • hz.9 โ€” also profhz.9, stathz.9, tick.9, tickadj.9

๐Ÿ‘‘ wifi (ieee80211), i2c (iic), min/max macros ๐Ÿ‘‘

  • ieee80211.9 โ€” also ieee80211_chan2ieee.9, ieee80211_chan2mode.9, ieee80211_ieee2mhz.9, ieee80211_ifattach.9, ieee80211_ifdetach.9, ieee80211_media2rate.9, ieee80211_media_change.9, ieee80211_media_init.9, ieee80211_media_status.9, ieee80211_mhz2ieee.9, ieee80211_rate2media.9, ieee80211_setmode.9, ieee80211_watchdog.9
  • iic.9 โ€” also iic_acquire_bus.9, iic_release_bus.9, iic_exec.9, iic_smbus_write_byte.9, iic_smbus_read_byte.9, iic_smbus_receive_byte.9
  • imax.9 โ€” also imin.9, lmax.9, lmin.9, uimax.9, uimin.9, ulmax.9, ulmin.9 (the whole min/max cinematic universe, no cap)
  • in4_cksum.9 โ€” also in_cksum.9, in6_cksum.9

๐ŸŽ€ ioasic, isa, isapnp ๐ŸŽ€

  • ioasic.9 โ€” also ioasic_intr_establish.9, ioasic_intr_disestablish.9, ioasic_intr_evcnt.9, ioasic_attach_devs.9, ioasic_submatch.9
  • isa.9 โ€” also isa_intr_alloc.9, isa_intr_establish.9, isa_intr_disestablish.9, isa_intr_evcnt.9, isa_dmamap_create.9, isa_dmamap_destroy.9, isa_dmamem_alloc.9, isa_dmamem_free.9, isa_dmamem_map.9, isa_dmamem_unmap.9, isa_malloc.9, isa_free.9, isa_dmastart.9, isa_dmaabort.9, isa_dmacount.9, isa_dmadone.9, isa_dmamaxsize.9, isa_drq_isfree.9, isa_dmacascade.9, isa_mappage.9
  • isapnp.9 โ€” also isapnp_devmatch.9, isapnp_config.9, isapnp_unconfig.9

๐ŸŒธ knotes & kcpusets (yes there are like twenty of them) ๐ŸŒธ

  • knote.9 โ€” also KNOTE.9, kfilter_register.9, kfilter_unregister.9
  • kcpuset.9 โ€” also kcpuset_create.9, kcpuset_destroy.9, kcpuset_copy.9, kcpuset_use.9, kcpuset_unuse.9, kcpuset_copyin.9, kcpuset_copyout.9, kcpuset_zero.9, kcpuset_fill.9, kcpuset_set.9, kcpuset_clear.9, kcpuset_isotherset.9, kcpuset_isset.9, kcpuset_iszero.9, kcpuset_countset.9, kcpuset_match.9, kcpuset_merge.9, kcpuset_export_32.9, kcpuset_atomic_set.9, kcpuset_atomic_clear.9

๐Ÿซถ kmem & kpreempt ๐Ÿซถ

  • kmem.9 โ€” also kmem_alloc.9, kmem_free.9, kmem_zalloc.9, kmem_intr_alloc.9, kmem_intr_free.9, kmem_intr_zalloc.9, kmem_asprintf.9, kmem_strdupsize.9, kmem_strfree.9, kmem_tmpbuf_alloc.9, kmem_tmpbuf_free.9
  • kpreempt.9 โ€” real page, MAN+= kpreempt.9, and then the aliases: kpreempt_disable.9, kpreempt_disabled.9, kpreempt_enable.9
not a typo bestie, kpreempt.9 is its own page and it collects aliases. two separate facts, both true ๐Ÿ’…

๐Ÿ’€ proc_find & the entire kprintf multiverse ๐Ÿ’€

  • proc_find.9 โ€” also pgrp_find.9

And then MLINKS+=kprintf.9 which is, genuinely, the biggest group in this whole chunk:

  • kprintf.9 โ€” also printf.9, printf_nolog.9, printf_nostamp.9, snprintf.9, vprintf.9, vsnprintf.9, uprintf.9, ttyprintf.9, tprintf.9, tprintf_open.9, tprintf_close.9
  • the aprint squad โ€” aprint_normal.9, aprint_naive.9, aprint_verbose.9, aprint_debug.9, aprint_error.9
  • the _dev variants โ€” aprint_normal_dev.9, aprint_naive_dev.9, aprint_verbose_dev.9, aprint_debug_dev.9, aprint_error_dev.9
  • the _ifnet variants โ€” aprint_normal_ifnet.9, aprint_naive_ifnet.9, aprint_verbose_ifnet.9, aprint_debug_ifnet.9, aprint_error_ifnet.9
  • and the stragglers โ€” aprint_get_error_count.9, device_printf.9

โญ kthread, linedisc, and lock (the big one) โญ

  • kthread.9 โ€” also kthread_exit.9, kthread_create.9, kthread_join.9
  • linedisc.9 โ€” also ttyldisc_add.9, ttyldisc_lookup.9, ttyldisc_remove.9
  • lock.9 โ€” also simple_lock_init.9, simple_lock.9, simple_lock_try.9, simple_unlock.9, simple_lock_freecheck.9, simple_lock_dump.9, lockinit.9, lockmgr.9, lockstatus.9, lockmgr_printinfo.9, transferlockers.9, spinlockinit.9, spinlockmgr.9

๐Ÿฆ‹ ltsleep & malloc ๐Ÿฆ‹

  • ltsleep.9 โ€” also wakeup.9, mtsleep.9, tsleep.9
  • malloc.9 โ€” also MALLOC.9, realloc.9, free.9, FREE.9, malloc_type_attach.9, malloc_type_detach.9, MALLOC_DEFINE.9, MALLOC_DECLARE.9

๐ŸŒˆ mbuf, aka the longest list known to humankind ๐ŸŒˆ

  • mbuf.9 โ€” also m_align.9, m_get.9, m_gethdr.9, m_devget.9, m_copym.9, m_copypacket.9, m_copydata.9, m_copyback.9, m_cat.9, m_dup.9, m_prepend.9, m_copyback_cow.9, m_makewritable.9, m_pulldown.9, m_pullup.9, m_copyup.9, m_split.9, m_adj.9, m_free.9, m_apply.9, m_freem.9, mtod.9, MGET.9, MGETHDR.9, MEXTMALLOC.9, MEXTADD.9, MCLGET.9, M_LEADINGSPACE.9, M_TRAILINGSPACE.9

Bestie that's twenty-nine aliases on one page. Twenty-nine. She's iconic for that, honestly. ๐Ÿ‘‘


okay so we're STILL in the MLINKS section and honestly? iconic behavior. keep scrolling bestie, the list is long but so is our patience ๐Ÿ’…

  • mbuf.9 ๐Ÿฆ‹ โ€” also answers to M_PREPEND.9, MCHTYPE.9, MFREE.9
  • mca.9 โ€” also answers to mca_intr_establish.9, mca_intr_disestablish.9, mca_intr_evcnt.9, mca_conf_read.9, mca_conf_write.9
  • microtime.9 โฐ โ€” also answers to bintime.9, getbintime.9, getmicrotime.9, nanotime.9, getnanotime.9
  • microuptime.9 โฑ๏ธ โ€” also answers to binuptime.9, getbinuptime.9, getmicrouptime.9, nanouptime.9, getnanouptime.9

notice how half of those start with get? the naming committee was having a DAY and we respect it ๐Ÿซถ

  • module.9 ๐Ÿ‘‘ โ€” also answers to module_autoload.9, module_builtin_require_force.9, module_find_section.9, module_getspecific.9, module_hold.9, module_init.9, module_init_class.9, module_kernel.9, module_load.9, module_load_vfs_init.9, module_name.9, module_rele.9, module_setspecific.9, module_source.9, module_specific_key_create.9, module_specific_key_delete.9, module_start_unload_thread.9, module_unload.9, module_register_callbacks.9, module_unregister_callbacks.9

twenty entries, one page. that's mother energy, no cap ๐Ÿ’–

  • mstohz.9 โ€” also answers to hztoms.9
  • mutex.9 ๐Ÿ”’ โ€” also answers to mutex_init.9, mutex_destroy.9, mutex_enter.9, mutex_exit.9, mutex_tryenter.9, mutex_owned.9, mutex_ownable.9, mutex_spin_enter.9, mutex_spin_exit.9
  • m_tag.9 โ€” also answers to m_tag_copy.9, m_tag_copy_chain.9, m_tag_delete.9, m_tag_delete_chain.9, m_tag_find.9, m_tag_free.9, m_tag_get.9, m_tag_prepend.9, m_tag_unlink.9
  • namecache.9 ๐Ÿ•ต๏ธ โ€” also answers to cache_lookup.9, cache_revlookup.9, cache_enter.9, cache_purge.9, cache_purgevfs.9, namecache_print.9
  • namei.9 โ€” also answers to lookup.9, relookup.9, NDINIT.9
  • nullop.9 ๐Ÿ’€ โ€” also answers to voidop.9, enodev.9, enxio.9, enoioctl.9, enosys.9, eopnotsupp.9

the stub squad fr fr. five of the six are literally error returns living their best life under an e prefix ๐Ÿ™ˆ

  • opencrypto.9 ๐Ÿ” โ€” also answers to crypto_get_driverid.9, crypto_register.9, crypto_kregister.9, crypto_unregister.9, crypto_done.9, crypto_kdone.9, crypto_newsession.9, crypto_freesession.9, crypto_dispatch.9, crypto_kdispatch.9, crypto_getreq.9, crypto_freereq.9

it's giving "register, unregister, dispatch, done, repeat" and the k variants are just standing behind their siblings being mysterious โœจ

  • optstr.9 โ€” also answers to optstr_get.9
  • pci.9 ๐ŸŽ€ โ€” also answers to pci_conf_read.9, pci_conf_write.9, pci_conf_print.9, pci_find_device.9, pci_get_capability.9, pci_get_ht_capability.9, pci_get_ext_capability.9, pci_mapreg_type.9, pci_mapreg_map.9, pci_mapreg_info.9, pci_get_powerstate.9, pci_set_powerstate.9, pci_vpd_read.9, pci_vpd_write.9, pci_make_tag.9, pci_decompose_tag.9, pci_findvendor.9, pci_devinfo.9, PCI_VENDOR.9, PCI_PRODUCT.9, PCI_REVISION.9

a whole buffet, and yes the last three are ALL CAPS because they're macros and macros yell ๐Ÿ’…

  • pci_intr.9 โ€” also answers to pci_intr_map.9, pci_intr_string.9, pci_intr_evcnt.9, pci_intr_establish.9, pci_intr_establish_xname.9, pci_intr_disestablish.9, pci_intr_setattr.9
  • pci_msi.9 ๐ŸŒˆ โ€” also answers to pci_msix.9, pci_intr_alloc.9, pci_intr_release.9, pci_intr_type.9, pci_intx_alloc.9, pci_intx_release.9, pci_msi_count.9, pci_msi_alloc.9, pci_msi_alloc_exact.9, pci_msi_release.9, pci_msi_establish.9, pci_msi_disestablish.9, pci_msix_count.9, pci_msix_alloc.9, pci_msix_alloc_exact.9, pci_msix_alloc_map.9, pci_msix_release.9, pci_msix_establish.9, pci_msix_disestablish.9

lowkey the pattern here is chef's kiss: count, alloc, alloc again but _exact, release, establish, disestablish โ€” for msi, for msix, and an honorary intx cameo ๐Ÿฆ‹

  • pci_configure_bus.9 โ€” also answers to pci_conf_hook.9, pci_conf_interrupt.9, pciconf_resource_add.9, pciconf_resource_fini.9, pciconf_resource_init.9
  • pckbport.9 โŒจ๏ธ โ€” also answers to pckbport_attach.9, pckbport_attach_slot.9, pckbport_cnattach.9, pckbportintr.9, pckbport_set_inputhandler.9, pckbport_flush.9, pckbport_poll_cmd.9, pckbport_enqueue_cmd.9, pckbport_poll_data.9, pckbport_set_poll.9, pckbport_xt_translation.9, pckbport_slot_enable.9

bestie look at pckbportintr.9 โ€” no underscore, just vibes ๐Ÿ˜ญ everybody else got the underscore treatment and it said "not me"

  • pcmcia.9 โ€” also answers to pcmcia_function_init.9, pcmcia_function_enable.9, pcmcia_function_disable.9, pcmcia_io_alloc.9, pcmcia_io_free.9, pcmcia_io_map.9, pcmcia_io_unmap.9, pcmcia_mem_alloc.9, pcmcia_mem_free.9, pcmcia_mem_map.9, pcmcia_mem_unmap.9, pcmcia_intr_establish.9, pcmcia_intr_disestablish.9, pcmcia_cis_read_1.9, pcmcia_cis_read_2.9, pcmcia_cis_read_3.9, pcmcia_cis_read_4.9, pcmcia_cis_read_n.9, pcmcia_scan_cis.9

_read_1 through _read_4 and then _read_n?? the way they just gave up counting at four ๐Ÿ’€

  • percpu.9 โ€” also answers to percpu_alloc.9, percpu_create.9, percpu_free.9, percpu_getref.9, percpu_putref.9, percpu_foreach.9, percpu_foreach_xcall.9
  • pfil.9 โ€” also answers to pfil_hook_get.9, pfil_add_hook.9, pfil_remove_hook.9, pfil_add_ihook.9, pfil_remove_ihook.9, pfil_head_register.9, pfil_head_unregister.9, pfil_head_get.9, pfil_run_hooks.9, pfil_run_addrhooks.9, pfil_run_ifhooks.9
  • pktqueue.9 ๐Ÿ“ฆ โ€” also answers to pktq_create.9, pktq_destroy.9, pktq_enqueue.9, pktq_dequeue.9, pktq_barrier.9, pktq_ifdetach.9, pktq_flush.9, pktq_set_maxlen.9, pktq_rps_hash.9, pktq_sysctl_setup.9, sysctl_pktq_rps_hash_handler.9

the way the prefix flips from pktqueue_ to pktq_ and then that last one has literally NO prefix at all โ€” she's the cousin who shows up uninvited and we love her ๐ŸŽ€


  • pmap.9 ๐Ÿ‘‘๐Ÿ”ฅ โ€” also answers to pmap_init.9, pmap_virtual_space.9, pmap_steal_memory.9, pmap_kernel.9, pmap_create.9, pmap_destroy.9, pmap_reference.9, pmap_fork.9, pmap_resident_count.9, pmap_wired_count.9, pmap_growkernel.9, pmap_enter.9, pmap_remove.9, pmap_remove_all.9, pmap_protect.9, pmap_unwire.9, pmap_extract.9, pmap_kenter_pa.9, pmap_kremove.9, pmap_copy.9, pmap_update.9, pmap_activate.9, pmap_deactivate.9, pmap_zero_page.9, pmap_copy_page.9, pmap_page_protect.9, pmap_clear_modify.9, pmap_clear_reference.9, pmap_is_modified.9, pmap_is_referenced.9, pmap_phys_address.9, PMAP_MAP_POOLPAGE.9, PMAP_UNMAP_POOLPAGE.9, PMAP_PREFER.9

the longest one in this whole stretch and she EARNED it. thirty-four aliases. main character energy only. and yes, the last three are ALL CAPS macros, we already established that macros yell ๐Ÿ’œ

  • pcq.9 โ€” also answers to pcq_create.9, pcq_destroy.9, pcq_get.9, pcq_peek.9, pcq_maxitems.9, pcq_put.9
  • pcu.9 โ€” also answers to pcu_load.9, pcu_save.9, pcu_save_all.9, pcu_discard.9, pcu_used_p.9
  • pmf.9 ๐ŸŒธ โ€” also answers to pmf_device_register.9, pmf_device_register1.9, pmf_device_deregister.9, pmf_device_suspend.9, pmf_device_resume.9, pmf_device_recursive_suspend.9, pmf_device_recursive_resume.9, pmf_device_subtree_resume.9, pmf_class_network_register.9, pmf_class_input_register.9, pmf_class_display_register.9, pmf_system_suspend.9, pmf_system_resume.9, pmf_system_shutdown.9, pmf_event_register.9, pmf_event_deregister.9, pmf_event_inject.9, pmf_set_platform.9, pmf_get_platform.9

pmf_device_register AND pmf_device_register1?? my god they ran out of names and just hit the 1 key ๐Ÿ˜ญ slay honestly

  • pool.9 โ€” also answers to pool_create.9, pool_destroy.9, pool_get.9, pool_init.9, pool_put.9, pool_prime.9, pool_sethiwat.9, pool_setlowat.9, pool_sethardlimit.9
  • pool_cache.9 โ€” also answers to pool_cache_init.9, pool_cache_destroy.9, pool_cache_get_paddr.9, pool_cache_get.9, pool_cache_put_paddr.9, pool_cache_put.9, pool_cache_destruct_object.9, pool_cache_invalidate.9, pool_cache_sethiwat.9, pool_cache_setlowat.9, pool_cache_sethardlimit.9
  • powerhook_establish.9 โ€” also answers to powerhook_disestablish.9
  • preempt.9 โ€” also answers to yield.9
  • pserialize.9 โ€” also answers to pserialize_create.9, pserialize_destroy.9, pserialize_read_enter.9, pserialize_read_exit.9, pserialize_perform.9
  • pslist.9 ๐Ÿ“‹ โ€” also answers to PSLIST_DESTROY.9, PSLIST_ENTRY_DESTROY.9, PSLIST_ENTRY_INIT.9, PSLIST_ENTRY_INITIALIZER.9, PSLIST_INIT.9, PSLIST_INITIALIZER.9, PSLIST_READER_FIRST.9, PSLIST_READER_FOREACH.9, PSLIST_READER_NEXT.9, PSLIST_WRITER_FIRST.9, PSLIST_WRITER_FOREACH.9, PSLIST_WRITER_INSERT_AFTER.9, PSLIST_WRITER_INSERT_BEFORE.9, PSLIST_WRITER_INSERT_HEAD.9, PSLIST_WRITER_NEXT.9, PSLIST_WRITER_REMOVE.9

every single one is SCREAMING in all caps and honestly? same. readers get FIRST / NEXT / FOREACH, writers get that plus the whole INSERT_AFTER / INSERT_BEFORE / INSERT_HEAD / REMOVE situation. it's giving organized โœจ

  • psref.9 โ€” also answers to psref_acquire.9, psref_class_create.9, psref_class_destroy.9, psref_copy.9, psref_held.9, psref_release.9, psref_target_destroy.9, psref_target_init.9
  • ras.9 โ€” also answers to ras_lookup.9, ras_fork.9, ras_purgeall.9
  • rasops.9 โ€” also answers to rasops_init.9, rasops_reconfig.9
  • rnd.9 ๐ŸŽฒ โ€” also answers to rnd_attach_source.9, rnd_detach_source.9, rnd_add_data.9, rnd_add_uint32.9
  • roundup.9 ๐Ÿงฎ โ€” also answers to howmany.9, rounddown.9, rounddown2.9, roundup2.9, powerof2.9

the math girlies are all on ONE page and the page isn't even named after most of them. roundup.9 said "I'll host" and everybody showed up ๐Ÿซถ

  • rssadapt.9 ๐Ÿ“ก โ€” also answers to ieee80211_rssadapt_choose.9, ieee80211_rssadapt_input.9, ieee80211_rssadapt_lower_rate.9, ieee80211_rssadapt_raise_rate.9, ieee80211_rssadapt_updatestats.9

every alias has the full ieee80211_ prefix and honestly that's commitment ๐Ÿ’…

  • rt_timer.9 โณ โ€” also answers to rt_timer_queue_create.9, rt_timer_queue_change.9, rt_timer_queue_destroy.9, rt_timer_add.9, rt_timer_remove_all.9

ok and that's where this chunk of the MLINKS wall ends โ€” but bestie we are NOT done, there's more page coming, don't you dare close the terminal ๐ŸŒˆ

okay bestie, the alias parade continues and it is lowkey organized chaos ๐Ÿซถโœจ every line below is the literal MLINKS+= / MAN+= directive โ€” names exactly as they appear, no cap. don't let the wall of underscores scare you ๐Ÿ’…

first up: the rwlock friend group, the STACK crew, and a couple of MAN+= pages that get their own whole moment ๐ŸŒธ

MLINKS+=rwlock.9 rw.9 rwlock.9 rw_init.9 rwlock.9 rw_destroy.9 rwlock.9 rw_enter.9 rwlock.9 rw_exit.9 rwlock.9 rw_tryenter.9 rwlock.9 rw_tryupgrade.9 rwlock.9 rw_downgrade.9 rwlock.9 rw_read_held.9 rwlock.9 rw_write_held.9 rwlock.9 rw_lock_held.9 rwlock.9 rw_lock_op.9
MLINKS+=STACK.9 STACK_ALLOC.9 STACK.9 STACK_MAX.9 STACK.9 STACK_ALIGN.9 STACK.9 STACK_GROW.9 STACK.9 STACK_SHRINK.9
MAN+= secmodel.9
MLINKS+=secmodel.9 secmodel_register.9 secmodel.9 secmodel_eval.9 secmodel.9 secmodel_deregister.9
MAN+= select.9
MLINKS+=select.9 selinit.9 select.9 seldestroy.9 select.9 selrecord.9 select.9 selnotify.9
MLINKS+=SET.9 CLR.9 SET.9 ISSET.9
MLINKS+=setbit.9 clrbit.9 setbit.9 isset.9 setbit.9 isclr.9
MLINKS+=setjmp.9 longjmp.9
MLINKS+=shutdownhook_establish.9 shutdownhook_disestablish.9

then the signal block said โ€œiโ€™m the main characterโ€ and honestly? it ate ๐Ÿ”ฅ every alias is right here, including the little 1.9 girlies โ€” no skipping ๐Ÿ’€

MLINKS+=signal.9 siginit.9 signal.9 sigactsinit.9 signal.9 sigactsunshare.9 signal.9 sigactsfree.9 signal.9 execsigs.9 signal.9 sigaction1.9 signal.9 sigprocmask1.9 signal.9 sigpending1.9 signal.9 sigsuspend1.9 signal.9 sigaltstack1.9 signal.9 pgsignal.9 signal.9 kpgsignal.9 signal.9 trapsignal.9 signal.9 psignal.9 signal.9 kpsignal.9 signal.9 issignal.9 signal.9 postsig.9 signal.9 killproc.9 signal.9 sigexit.9 signal.9 sendsig.9 signal.9 sigcode.9 signal.9 sigtramp.9

next: sockopt, softintr, and specificdata โ€” the way these names just keep going ๐Ÿ˜ญ but theyโ€™re all accounted for, fr fr ๐Ÿฆ‹

MLINKS+=sockopt.9 sockopt_init.9 sockopt.9 sockopt_destroy.9 sockopt.9 sockopt_get.9 sockopt.9 sockopt_getint.9 sockopt.9 sockopt_set.9 sockopt.9 sockopt_setint.9
MLINKS+=softintr.9 softintr_establish.9 softintr.9 softintr_disestablish.9 softintr.9 softintr_schedule.9 softintr.9 softint.9 softintr.9 softint_establish.9 softintr.9 softint_disestablish.9 softintr.9 softint_schedule.9
MLINKS+=specificdata.9 specificdata_domain_create.9 specificdata.9 specificdata_domain_delete.9 specificdata.9 specificdata_key_create.9 specificdata.9 specificdata_key_delete.9 specificdata.9 specificdata_init.9 specificdata.9 specificdata_fini.9 specificdata.9 specificdata_getspecific.9 specificdata.9 specificdata_getspecific_unlocked.9 specificdata.9 specificdata_setspecific.9 specificdata.9 specificdata_setspecific_nowait.9

spl era + strlist era, because why not have a whole bouquet of interrupt levels and string-list helpers ๐ŸŒˆ

MLINKS+=spl.9 spl0.9 spl.9 splbio.9 spl.9 splclock.9 spl.9 splhigh.9 spl.9 splimp.9 spl.9 spllowersoftclock.9 spl.9 splnet.9 spl.9 splsched.9 spl.9 splserial.9 spl.9 splsoftclock.9 spl.9 splsoftnet.9 spl.9 splsoftserial.9 spl.9 splstatclock.9 spl.9 spltty.9 spl.9 splvm.9 spl.9 splx.9 spl.9 splsoftbio.9
MLINKS+=strlist.9 strlist_append.9 strlist.9 strlist_count.9 strlist.9 strlist_index.9 strlist.9 strlist_match.9 strlist.9 strlist_next.9 strlist.9 strlist_pmatch.9 strlist.9 strlist_string.9

okay the sysctl line is iconic in the โ€œhow many aliases can one page haveโ€ sense ๐ŸŽ€ itโ€™s all here, bestie:

MLINKS+=sysctl.9 old_sysctl.9 sysctl.9 sysctl_create.9 sysctl.9 sysctl_createv.9 sysctl.9 sysctl_destroy.9 sysctl.9 sysctl_destroyv.9 sysctl.9 sysctl_dispatch.9 sysctl.9 sysctl_free.9 sysctl.9 sysctl_init.9 sysctl.9 sysctl_locate.9 sysctl.9 sysctl_lock.9 sysctl.9 sysctl_lookup.9 sysctl.9 sysctl_needfunc.9 sysctl.9 sysctl_notavail.9 sysctl.9 sysctl_null.9 sysctl.9 sysctl_query.9 sysctl.9 sysctl_teardown.9 sysctl.9 sysctl_unlock.9

sysmon_envsys, sysmon_pswitch, sysmon_taskq, then time stuff and tc โ€” a whole ecosystem honestly ๐ŸŒฑ

MLINKS+=sysmon_envsys.9 sysmon_envsys_create.9 sysmon_envsys.9 sysmon_envsys_destroy.9 sysmon_envsys.9 sysmon_envsys_register.9 sysmon_envsys.9 sysmon_envsys_unregister.9 sysmon_envsys.9 sysmon_envsys_sensor_attach.9 sysmon_envsys.9 sysmon_envsys_sensor_detach.9
MLINKS+=sysmon_pswitch.9 sysmon_pswitch_event.9 sysmon_pswitch.9 sysmon_pswitch_register.9 sysmon_pswitch.9 sysmon_pswitch_unregister.9
MLINKS+=sysmon_taskq.9 sysmon_task_queue_fini.9 sysmon_taskq.9 sysmon_task_queue_init.9 sysmon_taskq.9 sysmon_task_queue_preinit.9 sysmon_taskq.9 sysmon_task_queue_sched.9
MLINKS+=time_second.9 boottime.9 time_second.9 time_uptime.9
MLINKS+=timecounter.9 tc_init.9
MLINKS+=tc.9 tc_intr_establish.9 tc.9 tc_intr_disestablish.9 tc.9 tc_intr_evcnt.9 tc.9 tc_mb.9 tc.9 tc_wmb.9 tc.9 tc_syncbus.9 tc.9 tc_badaddr.9 tc.9 TC_DENSE_TO_SPARSE.9 tc.9 TC_PHYS_TO_UNCACHED.9

threadpool and todr said โ€œweโ€™re not doneโ€ and they meant it ๐Ÿ’…

MLINKS+=threadpool.9 threadpool_get.9 threadpool.9 threadpool_put.9 threadpool.9 threadpool_percpu_get.9 threadpool.9 threadpool_percpu_put.9 threadpool.9 threadpool_percpu_ref.9 threadpool.9 threadpool_percpu_ref_remote.9 threadpool.9 threadpool_job_init.9 threadpool.9 threadpool_job_destroy.9 threadpool.9 threadpool_job_done.9 threadpool.9 threadpool_schedule_job.9 threadpool.9 threadpool_cancel_job.9 threadpool.9 threadpool_cancel_job_async.9
MLINKS+=todr.9 todr_gettime.9 todr.9 todr_settime.9 todr.9 clock_ymdhms_to_secs.9 todr.9 clock_secs_to_ymdhms.9

now weโ€™re in the ubc / ufetch / ustore zone โ€” tiny names, big energy โœจ

MLINKS+=ubc.9 ubc_uiomove.9 ubc.9 ubc_zerorange.9 ubc.9 ubc_purge.9

MLINKS+=ufetch.9 ufetch_8.9 ufetch.9 ufetch_16.9 ufetch.9 ufetch_32.9 ufetch.9 ufetch_64.9 ufetch.9 ufetch_char.9 ufetch.9 ufetch_short.9 ufetch.9 ufetch_int.9 ufetch.9 ufetch_long.9 ufetch.9 ufetch_ptr.9

MLINKS+=ustore.9 ustore_8.9 ustore.9 ustore_16.9 ustore.9 ustore_32.9 ustore.9 ustore_64.9 ustore.9 ustore_char.9 ustore.9 ustore_short.9 ustore.9 ustore_int.9 ustore.9 ustore_long.9 ustore.9 ustore_ptr.9

and then uvm walked in with the longest alias list in the group chat ๐Ÿ˜ญ itโ€™s giving โ€œi have 40 cousins and youโ€™re gonna learn all their names.โ€ every token is below, no cap ๐Ÿซถ

MLINKS+=uvm.9 uvm_init.9 uvm.9 uvm_init_limits.9 uvm.9 uvm_setpagesize.9 uvm.9 uvm_swap_init.9 uvm.9 uvm_fault.9 uvm.9 uvm_vnp_setsize.9 uvm.9 uvm_io.9 uvm.9 uvm_pagealloc.9 uvm.9 uvm_pagerealloc.9 uvm.9 uvm_pagefree.9 uvm.9 uvm_pglistalloc.9 uvm.9 uvm_pglistfree.9 uvm.9 uvm_page_physload.9 uvm.9 uvm_pageout.9 uvm.9 uvm_scheduler.9 uvm.9 uao_create.9 uvm.9 uao_detach.9 uvm.9 uao_reference.9 uvm.9 uvm_chgkprot.9 uvm.9 uvm_kernacc.9 uvm.9 uvm_vslock.9 uvm.9 uvm_vsunlock.9 uvm.9 uvm_meter.9 uvm.9 uvm_fork.9 uvm.9 uvm_grow.9 uvm.9 uvn_findpages.9 uvm.9 uvm_loan.9 uvm.9 uvm_unloan.9 uvm.9 atop.9 uvm.9 ptoa.9 uvm.9 round_page.9 uvm.9 trunc_page.9
MLINKS+=uvm_km.9 uvm_km_alloc.9 uvm_km.9 uvm_km_free.9 uvm_km.9 uvm_km_suballoc.9
MLINKS+=uvm_map.9 uvm_unmap.9 uvm_map.9 uvm_map_pageable.9 uvm_map.9 uvm_map_checkprot.9 uvm_map.9 uvm_map_protect.9 uvm_map.9 uvm_deallocate.9 uvm_map.9 uvmspace_alloc.9 uvm_map.9 uvmspace_exec.9 uvm_map.9 uvmspace_fork.9 uvm_map.9 uvmspace_free.9 uvm_map.9 uvmspace_share.9 uvm_map.9 uvmspace_unshare.9
MLINKS+=uvm_obj_wirepages.9 uvm_obj_unwirepages.9

finally for this part: the vme lineup and one lonely vattr line hanging at the edge like โ€œmy part isnโ€™t done yetโ€ ๐Ÿ™ˆ

MLINKS+=vme.9 vme_probe.9 vme.9 vme_space_map.9 vme.9 vme_space_unmap.9 vme.9 vme_intr_map.9 vme.9 vme_intr_establish.9 vme.9 vme_intr_disestablish.9 vme.9 vme_intr_evcnt.9 vme.9 vme_dmamap_create.9 vme.9 vme_dmamap_destroy.9 vme.9 vme_dmamem_alloc.9 vme.9 vme_dmamem_free.9 vme.9 vme_space_alloc.9 vme.9 vme_space_free.9 vme.9 vme_space_get.9
MLINKS+=vattr.9

and yeah, it literally stops at MLINKS+=vattr.9 โ€” cliffhanger behavior ๐Ÿ˜ญ keep scrolling bestie, the next batch is incoming ๐Ÿ’–

okay so we're in the home stretch of the MLINKS+= list and honestly it's giving โœจ*final boss of cross references*โœจ โ€” it's literally page name after page name, each one wired up so the same man page answers to more than one name. no cap, every single one is here. ๐Ÿ’…

first up, one little leftover from the vattr fam that spilled over:

  • vattr_null.9 โ€” tail end of the vattr group, chilling here all on its own.

  • vfs_hooks.9 โ€” the header for the VFS hooks situation, with vfs_hooks_unmount.9 riding along as its buddy.
  • vfsops.9 โ€” okay this one is stacked, bestie, look at this lineup:
    • VFS_MOUNT.9, VFS_START.9, VFS_UNMOUNT.9, VFS_ROOT.9, VFS_QUOTACTL.9
    • VFS_STATVFS.9, VFS_SYNC.9, VFS_VGET.9, VFS_LOADVNODE.9, VFS_NEWVNODE.9
    • VFS_FHTOVP.9, VFS_VPTOFH.9, VFS_CHECKEXP.9, VFS_SNAPSHOT.9, VFS_SUSPENDCTL.9
  • vfssubr.9 โ€” the support squad, and there are so many of them:
    • vfs_getnewfsid.9, vfs_getvfs.9, vfs_export.9, vfs_showexport.9, vfs_export_lookup.9
    • vfs_setpublicfs.9, vfs_mountedon.9, vfs_mountroot.9, vfs_unmountall.9
    • vfs_busy.9, vfs_unbusy.9, vfs_mountalloc.9, vfs_rootmountalloc.9
    • vfs_shutdown.9, vfs_attach.9, vfs_detach.9, vfs_reinit.9, vfs_getopsbyname.9
    • vfs_resume.9, vfs_suspend.9, vfs_vnode_iterator_init.9, vfs_vnode_iterator_destroy.9, vfs_vnode_iterator_next.9
  • vmem.9 โ€” allocator things, all of them living under one roof:
    • vmem_alloc.9, vmem_create.9, vmem_destroy.9, vmem_free.9
    • vmem_xalloc.9, vmem_xalloc_addr.9, vmem_xfree.9, vmem_xfreeall.9
  • vnode.9 โ€” the big vnode page, and the aliases are chef's kiss:
    • vref.9, vrele.9, vrele_async.9, vput.9, vhold.9, holdrele.9
    • vcache_get.9, vcache_new.9, vcache_rekey_enter.9, vcache_rekey_exit.9
    • vrecycle.9, vgone.9, vgonel.9, vdead_check.9, vflush.9
    • bdevvp.9, cdevvp.9, vfinddev.9, vdevgone.9, vwakeup.9
    • vflushbuf.9, vinvalbuf.9, vtruncbuf.9, vprint.9
  • vnodeops.9 โ€” literally the entire VOP alphabet, strap in ๐Ÿซ :
    • VOP_LOOKUP.9, VOP_CREATE.9, VOP_MKNOD.9, VOP_OPEN.9, VOP_CLOSE.9
    • VOP_ACCESS.9, VOP_GETATTR.9, VOP_SETATTR.9, VOP_READ.9, VOP_WRITE.9
    • VOP_IOCTL.9, VOP_FCNTL.9, VOP_POLL.9, VOP_REVOKE.9, VOP_MMAP.9
    • VOP_FSYNC.9, VOP_SEEK.9, VOP_REMOVE.9, VOP_LINK.9, VOP_RENAME.9
    • VOP_MKDIR.9, VOP_RMDIR.9, VOP_SYMLINK.9, VOP_READDIR.9, VOP_READLINK.9
    • VOP_ABORTOP.9, VOP_INACTIVE.9, VOP_RECLAIM.9, VOP_LOCK.9, VOP_UNLOCK.9
    • VOP_ISLOCKED.9, VOP_BMAP.9, VOP_PRINT.9, VOP_PATHCONF.9, VOP_ADVLOCK.9
    • VOP_LEASE.9, VOP_WHITEOUT.9, VOP_GETPAGES.9, VOP_PUTPAGES.9, VOP_STRATEGY.9
    • VOP_BWRITE.9, VOP_GETEXTATTR.9, VOP_SETEXTATTR.9, VOP_LISTEXTATTR.9
  • vnfileops.9 โ€” file-op flavoured vnode stuff:
    • vn_closefile.9, vn_fcntl.9, vn_ioctl.9, vn_read.9, vn_poll.9, vn_statfile.9, vn_write.9
  • vnsubr.9 โ€” the subroutine squad:
    • vn_bwrite.9, vn_close.9, vn_default_error.9, vn_isunder.9, vn_lock.9
    • vn_markexec.9, vn_marktext.9, vn_rdwr.9, vn_stat.9, vn_open.9, vn_writechk.9
  • wapbl.9 โ€” the write-ahead journaling crowd, lowkey iconic:
    • wapbl_start.9, wapbl_stop.9, wapbl_begin.9, wapbl_end.9, wapbl_flush.9, wapbl_discard.9
    • wapbl_add_buf.9, wapbl_remove_buf.9, wapbl_resize_buf.9
    • wapbl_register_inode.9, wapbl_unregister_inode.9, wapbl_register_deallocation.9
    • wapbl_jlock_assert.9, wapbl_junlock_assert.9
  • workqueue.9 โ€” short and sweet, we love to see it:
    • workqueue_create.9, workqueue_enqueue.9, workqueue_destroy.9
  • wsdisplay.9 โ€” console/display era ๐ŸŒˆ:
    • wsdisplay_switchtoconsole.9, wsdisplay_cnattach.9, wsdisplaydevprint.9, wsemuldisplaydevprint.9
  • wsfont.9 โ€” fonts, fonts, fonts:
    • wsfont_init.9, wsfont_matches.9, wsfont_find.9, wsfont_add.9, wsfont_remove.9
    • wsfont_enum.9, wsfont_lock.9, wsfont_unlock.9, wsfont_getflg.9, wsfont_map_unichar.9
  • wskbd.9 โ€” keyboard bestie โŒจ๏ธ:
    • wskbd_input.9, wskbd_rawinput.9, wskbd_cnattach.9, wskbd_cndetach.9, wskbddevprint.9
  • wsmouse.9 โ€” and the mouse to match ๐Ÿ–ฑ๏ธ:
    • wsmouse_input.9, wsmousedevprint.9
  • xcall.9 โ€” cross-call girlies:
    • xc_broadcast.9, xc_unicast.9, xc_wait.9
  • panic.9 โ€” and the very last pairing, appropriately dramatic ๐Ÿ’€:
    • vpanic.9

๐Ÿ the actual last line

then, right at the bottom, there's one more directive that isn't a link at all โ€” it's where the build goes looking for the arch-specific subdirectories:

SUBDIR= man9.i386 man9.sun3 man9.x86
that's it, that's the whole list โ€” you made it, bestie ๐Ÿซถ

and that's the page! the footer at the very bottom is the usual source/version-and-date situation (the NetBSD source and version tag plus the date stamp), so consider this your cute lil sign-off: mwah, go read some man pages, ily. ๐ŸŽ€๐Ÿ’–

๐Ÿ“ฆ where this page comes from