nand_extract_bits(9)
π nand_extract_bits(9) β Kernel API Manual, but make it make sense
okay so bestie, welcome to the Kernel API Manual page for nand_extract_bits, and honestly? she's a tiny little baddie with one job and she does it flawlessly. no notes. let's get into it π
β¨ NAME β¨
nand_extract_bits β literally copies unaligned bits from one buffer to another one. that's it. that's the whole personality. and yet, iconic. π
πΈ SYNOPSIS πΈ
void nand_extract_bits (u8 *dst , unsigned int dst_off , const u8 *src ,
unsigned int src_off , unsigned int nbits );
like look at her. five arguments. zero drama. we stan a signature that fits on two lines. π¦
π«Ά ARGUMENTS π«Ά
dstβ the destination buffer, aka where the bits are going. the glow-up location. β¨dst_offβ the bit offset at which the writing starts. not byte offset, bestie, bit offset. iykyk. πsrcβ the source buffer, aka where the bits are coming from. the origin story. πsrc_offβ the bit offset at which the reading starts. again. bits. not bytes. do not come for me. πnbitsβ number of bits to copy fromsrctodst. yes, she counts in bits. she's built different. π
π DESCRIPTION π
so the whole gig is: copy bits from one memory region to another. that's it. that's the function.
and the slay detail? overlap authorized π₯ β meaning the two regions are allowed to overlap and this is fine and legal and not a crime. no cap, it's giving "i got you, don't worry about the buffer boundaries." main character energy honestly. π
π SEE ALSO π
the whole nand cinematic universe, and yes we're listing every single one because nobody gets left out on my watch π
Kernel file ./drivers/mtd/nand/raw/nand_base.c, and also:
- opening / target management era:
nand_select_target(9),nand_deselect_target(9),nand_release_device(9),nand_bbm_get_next_page(9),nand_block_bad(9),nand_region_is_secured(9),nand_get_device(9),nand_check_wp(9) - oob-adjacent besties:
nand_fill_oob(9),nand_do_write_oob(9),nand_default_block_markbad(9),nand_markbad_bbm(9),nand_block_markbad_lowlevel(9),nand_block_isreserved(9),nand_block_checkbad(9) - waiting & interface glow-ups:
nand_soft_waitrdy(9),nand_gpio_waitrdy(9),panic_nand_wait(9),nand_reset_interface(9),nand_setup_interface(9),nand_choose_best_sdr_timings(9),nand_choose_best_nvddr_timings(9),nand_choose_best_timings(9),nand_choose_interface_config(9),nand_fill_column_cycles(9) - the op squad:
nand_read_page_op(9),nand_read_param_page_op(9),nand_change_read_column_op(9),nand_read_oob_op(9),nand_prog_page_begin_op(9),nand_prog_page_end_op(9),nand_prog_page_op(9),nand_change_write_column_op(9),nand_readid_op(9),nand_status_op(9),nand_exit_status_op(9),nand_erase_op(9),nand_set_features_op(9),nand_get_features_op(9),nand_reset_op(9),nand_read_data_op(9),nand_write_data_op(9) - the parser girlies:
struct nand_op_parser_ctx(9),nand_op_parser_must_split_instr(9),nand_op_parser_match_pat(9),nand_op_parser_exec_op(9),nand_subop_get_addr_start_off(9),nand_subop_get_num_addr_cyc(9),nand_subop_get_data_start_off(9),nand_subop_get_data_len(9) - feature / reset core:
nand_reset(9),nand_get_features(9),nand_set_features(9) - raw page read delegation:
nand_read_page_raw_notsupp(9),nand_read_page_raw(9),nand_monolithic_read_page_raw(9),nand_read_page_raw_syndrome(9),nand_read_page_swecc(9),nand_read_subpage(9),nand_read_page_hwecc(9),nand_read_page_hwecc_oob_first(9),nand_read_page_syndrome(9) - read ops pipeline:
nand_transfer_oob(9),nand_setup_read_retry(9),nand_do_read_ops(9),nand_read_oob_std(9),nand_read_oob_syndrome(9),nand_write_oob_std(9),nand_write_oob_syndrome(9),nand_do_read_oob(9),nand_read_oob(9) - raw page write delegation:
nand_write_page_raw_notsupp(9),nand_write_page_raw(9),nand_monolithic_write_page_raw(9),nand_write_page_raw_syndrome(9),nand_write_page_swecc(9),nand_write_page_hwecc(9),nand_write_subpage_hwecc(9),nand_write_page_syndrome(9) - write ops pipeline:
nand_write_page(9),nand_do_write_ops(9),panic_nand_write(9),nand_write_oob(9) - erase & sync & bad-block crew:
nand_erase(9),nand_erase_nand(9),nand_sync(9),nand_block_isbad(9),nand_block_markbad(9) - lifecycle & power vibes:
nand_suspend(9),nand_resume(9),nand_shutdown(9),nand_lock(9),nand_unlock(9) - scan & ecc conf era:
rawnand_dt_parse_gpio_cs(9),nand_scan_ident(9),nand_check_ecc_caps(9),nand_match_ecc_req(9),nand_maximize_ecc(9),nand_ecc_choose_conf(9),nand_scan_tail(9),nand_scan_with_ids(9),nand_cleanup(9)
bestie reminder π«Ά this is a bit-level copy, sodst_offandsrc_offare measured in bits, and overlapping regions are fully authorized. no cap. go off. π
kisses and bye-bye from ./drivers/mtd/nand/raw π β page stamped October 2026, manual name nand_extract_bits(9), and that's the whole footer babyyyy πβ¨πΈ
π¦ 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