Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/translations/documentation/booksarch-handbookboot_index/fr_FR/units/?format=api&page=6
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 293,
    "next": null,
    "previous": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/units/?format=api&page=5",
    "results": [
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/x86/include/segments.h:\n/*\n * Entries in the Global Descriptor Table (GDT)\n */\n#define\tGNULL_SEL\t0\t/* Null Descriptor */\n#define\tGPRIV_SEL\t1\t/* SMP Per-Processor Private Data */\n#define\tGUFS_SEL\t2\t/* User %fs Descriptor (order critical: 1) */\n#define\tGUGS_SEL\t3\t/* User %gs Descriptor (order critical: 2) */\n#define\tGCODE_SEL\t4\t/* Kernel Code Descriptor (order critical: 1) */\n#define\tGDATA_SEL\t5\t/* Kernel Data Descriptor (order critical: 2) */\n#define\tGUCODE_SEL\t6\t/* User Code Descriptor (order critical: 3) */\n#define\tGUDATA_SEL\t7\t/* User Data Descriptor (order critical: 4) */\n#define\tGBIOSLOWMEM_SEL\t8\t/* BIOS low memory access (must be entry 8) */\n#define\tGPROC0_SEL\t9\t/* Task state process slot zero and up */\n#define\tGLDT_SEL\t10\t/* Default User LDT */\n#define\tGUSERLDT_SEL\t11\t/* User LDT */\n#define\tGPANIC_SEL\t12\t/* Task state to consider panic from */\n#define\tGBIOSCODE32_SEL\t13\t/* BIOS interface (32bit Code) */\n#define\tGBIOSCODE16_SEL\t14\t/* BIOS interface (16bit Code) */\n#define\tGBIOSDATA_SEL\t15\t/* BIOS interface (Data) */\n#define\tGBIOSUTIL_SEL\t16\t/* BIOS interface (Utility) */\n#define\tGBIOSARGS_SEL\t17\t/* BIOS interface (Arguments) */\n#define\tGNDIS_SEL\t18\t/* For the NDIS layer */\n#define\tNGDT\t\t19\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 3160799259206036359,
            "content_hash": 3160799259206036359,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1434",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 249,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 198,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436695/?format=api",
            "priority": 100,
            "id": 1437330,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=abdd6a2dfb4b2b87",
            "url": "https://translate-dev.freebsd.org/api/units/1437330/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.766752Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "Note that those #defines are not selectors themselves, but just a field INDEX of a selector, so they are exactly the indices of the GDT.  for example, an actual selector for the kernel code (GCODE_SEL) has the value 0x20."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8176078262795571696,
            "content_hash": -8176078262795571696,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1438",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 250,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 39,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436697/?format=api",
            "priority": 100,
            "id": 1437331,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=0e88bc238246ee10",
            "url": "https://translate-dev.freebsd.org/api/units/1437331/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.771080Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The next step is to initialize the Interrupt Descriptor Table (IDT).  This table is referenced by the processor when a software or hardware interrupt occurs.  For example, to make a system call, user application issues the `INT 0x80` instruction.  This is a software interrupt, so the processor's hardware looks up a record with index 0x80 in the IDT.  This record points to the routine that handles this interrupt, in this particular case, this will be the kernel's syscall gate.  The IDT may have a maximum of 256 (0x100) records.  The kernel allocates NIDT records for the IDT, where NIDT is the maximum (256):"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 7186970414472126712,
            "content_hash": 7186970414472126712,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1446",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 251,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 103,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436699/?format=api",
            "priority": 100,
            "id": 1437332,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=e3bd3f8385da60f8",
            "url": "https://translate-dev.freebsd.org/api/units/1437332/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.774777Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "For each interrupt, an appropriate handler is set.  The syscall gate for `INT 0x80` is set as well:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -277368198141816850,
            "content_hash": -277368198141816850,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1456",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 253,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 18,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436701/?format=api",
            "priority": 100,
            "id": 1437333,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=7c269717e5c44fee",
            "url": "https://translate-dev.freebsd.org/api/units/1437333/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.782392Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/i386/i386/machdep.c:\n\tsetidt(IDT_SYSCALL, &IDTVEC(int0x80_syscall),\n\t\t\tSDT_SYS386IGT, SEL_UPL, GSEL(GCODE_SEL, SEL_KPL));\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 6744683379925620864,
            "content_hash": 6744683379925620864,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1462",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 254,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 7,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436703/?format=api",
            "priority": 100,
            "id": 1437334,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=dd99edcc96f29880",
            "url": "https://translate-dev.freebsd.org/api/units/1437334/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.786499Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/i386/i386/machdep.c:\n\tcninit();\n/* skipped */\n  kdb_init();\n#ifdef KDB\n\tif (boothowto & RB_KDB)\n\t\tkdb_enter(KDB_WHY_BOOTFLAGS, \"Boot flags requested debugger\");\n#endif\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2012254997938625272,
            "content_hash": 2012254997938625272,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1478",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 257,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 18,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436705/?format=api",
            "priority": 100,
            "id": 1437335,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=9becf7425da2daf8",
            "url": "https://translate-dev.freebsd.org/api/units/1437335/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.796188Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The Local Descriptors Table is used to reference userland code and data.  Several selectors are defined to point to the LDT, they are the system call gates and the user code and data selectors:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2783708399809134021,
            "content_hash": 2783708399809134021,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1484",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 259,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436707/?format=api",
            "priority": 100,
            "id": 1437336,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=a6a1b80a78e4fdc5",
            "url": "https://translate-dev.freebsd.org/api/units/1437336/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.857637Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/x86/include/segments.h:\n#define\tLSYS5CALLS_SEL\t0\t/* forced by intel BCS */\n#define\tLSYS5SIGR_SEL\t1\n#define\tLUCODE_SEL\t3\n#define\tLUDATA_SEL\t5\n#define\tNLDT\t\t(LUDATA_SEL + 1)\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3364917455224861351,
            "content_hash": -3364917455224861351,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1493",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 260,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 24,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436709/?format=api",
            "priority": 100,
            "id": 1437337,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=514d69670ecf8d59",
            "url": "https://translate-dev.freebsd.org/api/units/1437337/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.861823Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "Next, proc0's Process Control Block (`struct pcb`) structure is initialized.  proc0 is a `struct proc` structure that describes a kernel process.  It is always present while the kernel is running, therefore it is linked with thread0:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2411460706721938861,
            "content_hash": -2411460706721938861,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1498",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 261,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 36,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436711/?format=api",
            "priority": 100,
            "id": 1437338,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=5e88c5438206c253",
            "url": "https://translate-dev.freebsd.org/api/units/1437338/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.865795Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/i386/i386/machdep.c:\nregister_t\ninit386(int first)\n{\n    /* ... skipped ... */\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8385406470627532957,
            "content_hash": 8385406470627532957,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1506",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 262,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 10,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436713/?format=api",
            "priority": 100,
            "id": 1437339,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=f45ef2c1db04209d",
            "url": "https://translate-dev.freebsd.org/api/units/1437339/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.870265Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "    proc_linkup0(&proc0, &thread0);\n    /* ... skipped ... */\n}\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 5116111209993946715,
            "content_hash": 5116111209993946715,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1510",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 263,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 8,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436715/?format=api",
            "priority": 100,
            "id": 1437340,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=c700140a0715465b",
            "url": "https://translate-dev.freebsd.org/api/units/1437340/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.876043Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The structure `struct pcb` is a part of a proc structure.  It is defined in [.filename]#/usr/include/machine/pcb.h# and has a process's information specific to the i386 architecture, such as registers values."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8257741692319495952,
            "content_hash": 8257741692319495952,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1514",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 264,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 30,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436717/?format=api",
            "priority": 100,
            "id": 1437341,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=f299645159a2f710",
            "url": "https://translate-dev.freebsd.org/api/units/1437341/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.886750Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/kern/init_main.c:\n\tfor (sipp = sysinit; sipp < sysinit_end; sipp++) {\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -843137760784888106,
            "content_hash": -843137760784888106,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1523",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 267,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 10,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436719/?format=api",
            "priority": 100,
            "id": 1437342,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=744c92ac77b2ced6",
            "url": "https://translate-dev.freebsd.org/api/units/1437342/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.953125Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "Every system initialization object (sysinit object) is created by calling a SYSINIT() macro.  Let us take as example an `announce` sysinit object.  This object prints the copyright message:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -10745820838869193,
            "content_hash": -10745820838869193,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1537",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 271,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 28,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436721/?format=api",
            "priority": 100,
            "id": 1437343,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=7fd9d2bb9e144737",
            "url": "https://translate-dev.freebsd.org/api/units/1437343/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.970320Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/kern/init_main.c:\nstatic void\nprint_caddr_t(void *data __unused)\n{\n\tprintf(\"%s\", (char *)data);\n}\n/* ... skipped ... */\nSYSINIT(announce, SI_SUB_COPYRIGHT, SI_ORDER_FIRST, print_caddr_t, copyright);\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8837472577090343749,
            "content_hash": 8837472577090343749,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1548",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 272,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 21,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436723/?format=api",
            "priority": 100,
            "id": 1437344,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=faa5027c65b9d345",
            "url": "https://translate-dev.freebsd.org/api/units/1437344/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.974451Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The subsystem ID for this object is SI_SUB_COPYRIGHT (0x0800001).  So, the copyright message will be printed out first, just after the console initialization."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2283709589131675783,
            "content_hash": 2283709589131675783,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1552",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 273,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 23,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436725/?format=api",
            "priority": 100,
            "id": 1437345,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=9fb15dc58e58c887",
            "url": "https://translate-dev.freebsd.org/api/units/1437345/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.980509Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "Let us take a look at what exactly the macro `SYSINIT()` does.  It expands to a `C_SYSINIT()` macro.  The `C_SYSINIT()` macro then expands to a static `struct sysinit` structure declaration with another `DATA_SET` macro call:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 4615136525243812842,
            "content_hash": 4615136525243812842,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1556",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 274,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 35,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436727/?format=api",
            "priority": 100,
            "id": 1437346,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=c00c4237b9168bea",
            "url": "https://translate-dev.freebsd.org/api/units/1437346/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:37.984837Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "/usr/include/sys/kernel.h:\n      #define C_SYSINIT(uniquifier, subsystem, order, func, ident) \\\n      static struct sysinit uniquifier ## _sys_init = { \\ subsystem, \\\n      order, \\ func, \\ (ident) \\ }; \\ DATA_WSET(sysinit_set,uniquifier ##\n      _sys_init);\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -4337549903764371273,
            "content_hash": -4337549903764371273,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1564",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 275,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 30,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436729/?format=api",
            "priority": 100,
            "id": 1437347,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=43cded58069848b7",
            "url": "https://translate-dev.freebsd.org/api/units/1437347/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.053778Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "#define\tSYSINIT(uniquifier, subsystem, order, func, ident)\t\\\n\tC_SYSINIT(uniquifier, subsystem, order,\t\t\t\\\n\t(sysinit_cfunc_t)(sysinit_nfunc_t)func, (void *)(ident))\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2672645011271876147,
            "content_hash": -2672645011271876147,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1568",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 276,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 14,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436731/?format=api",
            "priority": 100,
            "id": 1437348,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=5ae8db85c46b81cd",
            "url": "https://translate-dev.freebsd.org/api/units/1437348/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.058131Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The `DATA_SET()` macro expands to a `_MAKE_SET()`, and that macro is the point where all the sysinit magic is hidden:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2385931087557404755,
            "content_hash": -2385931087557404755,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1571",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 277,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 20,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436733/?format=api",
            "priority": 100,
            "id": 1437349,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=5ee378512b9457ad",
            "url": "https://translate-dev.freebsd.org/api/units/1437349/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.062554Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "/usr/include/linker_set.h:\n#define TEXT_SET(set, sym) _MAKE_SET(set, sym)\n#define DATA_SET(set, sym) _MAKE_SET(set, sym)\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8956736948686896211,
            "content_hash": 8956736948686896211,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1577",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 278,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 11,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436735/?format=api",
            "priority": 100,
            "id": 1437350,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=fc4cb8cccd193c53",
            "url": "https://translate-dev.freebsd.org/api/units/1437350/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.067174Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "After executing these macros, various sections were made in the kernel, including`set.sysinit_set`.  Running objdump on a kernel binary, you may notice the presence of such small sections:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -6992113184431442186,
            "content_hash": -6992113184431442186,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1581",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 279,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 27,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436737/?format=api",
            "priority": 100,
            "id": 1437351,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=1ef7061ac4a376f6",
            "url": "https://translate-dev.freebsd.org/api/units/1437351/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.074604Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "% llvm-objdump -h /kernel\nSections:\nIdx Name                               Size     VMA      Type\n 10 set_sysctl_set                     000021d4 01827078 DATA\n 16 set_kbddriver_set                  00000010 0182a4d0 DATA\n 20 set_scterm_set                     0000000c 0182c75c DATA\n 21 set_cons_set                       00000014 0182c768 DATA\n 33 set_scrndr_set                     00000024 0182c828 DATA\n 41 set_sysinit_set                    000014d8 018fabb0 DATA\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8574511370304156779,
            "content_hash": -8574511370304156779,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1593",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 280,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 40,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436739/?format=api",
            "priority": 100,
            "id": 1437352,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=09013756a2790b95",
            "url": "https://translate-dev.freebsd.org/api/units/1437352/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.079284Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "This screen dump shows that the size of set.sysinit_set section is 0x14d8 bytes, so `0x14d8/sizeof(void *)` sysinit objects are compiled into the kernel.  The other sections such as `set.sysctl_set` represent other linker sets."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 4704716232418067035,
            "content_hash": 4704716232418067035,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1597",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 281,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 33,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436741/?format=api",
            "priority": 100,
            "id": 1437353,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=c14a827c9a4b025b",
            "url": "https://translate-dev.freebsd.org/api/units/1437353/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.083697Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "By defining a variable of type `struct sysinit` the content of `set.sysinit_set` section will be \"collected\" into that variable:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2320165597606611715,
            "content_hash": 2320165597606611715,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1599",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 282,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 19,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436743/?format=api",
            "priority": 100,
            "id": 1437354,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=a032e251796c8b03",
            "url": "https://translate-dev.freebsd.org/api/units/1437354/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.150191Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/kern/init_main.c:\n  SET_DECLARE(sysinit_set, struct sysinit);\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3840119093180254934,
            "content_hash": -3840119093180254934,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1604",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 283,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 4,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436745/?format=api",
            "priority": 100,
            "id": 1437355,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=4ab52807d3cbb52a",
            "url": "https://translate-dev.freebsd.org/api/units/1437355/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.156667Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The `struct sysinit` is defined as follows:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8065507834668769113,
            "content_hash": 8065507834668769113,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1607",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 284,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 7,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436747/?format=api",
            "priority": 100,
            "id": 1437356,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=efee70a48a8fdf59",
            "url": "https://translate-dev.freebsd.org/api/units/1437356/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.160503Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/sys/kernel.h:\n  struct sysinit {\n\tenum sysinit_sub_id\tsubsystem;\t/* subsystem identifier*/\n\tenum sysinit_elem_order\torder;\t\t/* init order within subsystem*/\n\tsysinit_cfunc_t func;\t\t\t/* function\t\t*/\n\tconst void\t*udata;\t\t\t/* multiplexer/argument */\n};\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -266988184645425778,
            "content_hash": -266988184645425778,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1617",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 285,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 30,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436749/?format=api",
            "priority": 100,
            "id": 1437357,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=7c4b77a91efba58e",
            "url": "https://translate-dev.freebsd.org/api/units/1437357/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.164692Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "Returning to the `mi_startup()` discussion, it is must be clear now, how the sysinit objects are being organized.  The `mi_startup()` function sorts them and calls each.  The very last object is the system scheduler:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -5764470494903486789,
            "content_hash": -5764470494903486789,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1622",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 286,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436751/?format=api",
            "priority": 100,
            "id": 1437358,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=30007ca0590eb6bb",
            "url": "https://translate-dev.freebsd.org/api/units/1437358/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.168681Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "/usr/include/sys/kernel.h:\nenum sysinit_sub_id {\n\tSI_SUB_DUMMY\t\t= 0x0000000,\t/* not executed; for linker*/\n\tSI_SUB_DONE\t\t= 0x0000001,\t/* processed*/\n\tSI_SUB_TUNABLES\t\t= 0x0700000,\t/* establish tunable values */\n\tSI_SUB_COPYRIGHT\t= 0x0800001,\t/* first use of console*/\n...\n\tSI_SUB_LAST\t\t= 0xfffffff\t/* final initialization */\n};\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -4020755177944712359,
            "content_hash": -4020755177944712359,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1634",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 287,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 42,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436753/?format=api",
            "priority": 100,
            "id": 1437359,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=48336877f1cafb59",
            "url": "https://translate-dev.freebsd.org/api/units/1437359/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.175988Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The system scheduler sysinit object is defined in the file [.filename]#sys/vm/vm_glue.c#, and the entry point for that object is `scheduler()`.  That function is actually an infinite loop, and it represents a process with PID 0, the swapper process.  The thread0 structure, mentioned before, is used to describe it."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 9024181217344328284,
            "content_hash": 9024181217344328284,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1639",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 288,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 48,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436755/?format=api",
            "priority": 100,
            "id": 1437360,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=fd3c5501488f925c",
            "url": "https://translate-dev.freebsd.org/api/units/1437360/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.180145Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/kern/init_main.c:\nstatic void\ncreate_init(const void *udata __unused)\n{\n\tstruct fork_req fr;\n\tstruct ucred *newcred, *oldcred;\n\tstruct thread *td;\n\tint error;\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 4373904580847336475,
            "content_hash": 4373904580847336475,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1652",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 290,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 20,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436757/?format=api",
            "priority": 100,
            "id": 1437361,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=bcb33b0ad6dbfc1b",
            "url": "https://translate-dev.freebsd.org/api/units/1437361/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.188798Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "\tbzero(&fr, sizeof(fr));\n\tfr.fr_flags = RFFDG | RFPROC | RFSTOPPED;\n\tfr.fr_procp = &initproc;\n\terror = fork1(&thread0, &fr);\n\tif (error)\n\t\tpanic(\"cannot fork init: %d\\n\", error);\n\tKASSERT(initproc->p_pid == 1, (\"create_init: initproc->p_pid != 1\"));\n\t/* divorce init's credentials from the kernel's */\n\tnewcred = crget();\n\tsx_xlock(&proctree_lock);\n\tPROC_LOCK(initproc);\n\tinitproc->p_flag |= P_SYSTEM | P_INMEM;\n\tinitproc->p_treeflag |= P_TREE_REAPER;\n\toldcred = initproc->p_ucred;\n\tcrcopy(newcred, oldcred);\n#ifdef MAC\n\tmac_cred_create_init(newcred);\n#endif\n#ifdef AUDIT\n\taudit_cred_proc1(newcred);\n#endif\n\tproc_set_cred(initproc, newcred);\n\ttd = FIRST_THREAD_IN_PROC(initproc);\n\tcrcowfree(td);\n\ttd->td_realucred = crcowget(initproc->p_ucred);\n\ttd->td_ucred = td->td_realucred;\n\tPROC_UNLOCK(initproc);\n\tsx_xunlock(&proctree_lock);\n\tcrfree(oldcred);\n\tcpu_fork_kthread_handler(FIRST_THREAD_IN_PROC(initproc), start_init, NULL);\n}\nSYSINIT(init, SI_SUB_CREATE_INIT, SI_ORDER_FIRST, create_init, NULL);\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 658938301461247435,
            "content_hash": 658938301461247435,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1685",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 291,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 88,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436759/?format=api",
            "priority": 100,
            "id": 1437362,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=892504e4db7f35cb",
            "url": "https://translate-dev.freebsd.org/api/units/1437362/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.255019Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The function `create_init()` allocates a new process by calling `fork1()`, but does not mark it runnable.  When this new process is scheduled for execution by the scheduler, the `start_init()` will be called.  That function is defined in [.filename]#init_main.c#.  It tries to load and exec the [.filename]#init# binary, probing [.filename]#/sbin/init# first, then [.filename]#/sbin/oinit#, [.filename]#/sbin/init.bak#, and finally [.filename]#/rescue/init#:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 4040839099632815195,
            "content_hash": 4040839099632815195,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1691",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 292,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 56,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436761/?format=api",
            "priority": 100,
            "id": 1437363,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=b813f1c0781f8c5b",
            "url": "https://translate-dev.freebsd.org/api/units/1437363/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.260232Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "sys/kern/init_main.c:\nstatic char init_path[MAXPATHLEN] =\n#ifdef\tINIT_PATH\n    __XSTRING(INIT_PATH);\n#else\n    \"/sbin/init:/sbin/oinit:/sbin/init.bak:/rescue/init\";\n#endif\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1813822175094227308,
            "content_hash": 1813822175094227308,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1701",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 293,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 11,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436763/?format=api",
            "priority": 100,
            "id": 1437364,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=992bfda88037c16c",
            "url": "https://translate-dev.freebsd.org/api/units/1437364/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T02:59:38.266062Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "After control is received from the BIOS at memory address `0x7c00`, [.filename]#boot0# starts executing.  It is the first piece of code under FreeBSD control.  The task of [.filename]#boot0# is quite simple: scan the partition table and let the user choose which partition to boot from.  The Partition Table is a special, standard data structure embedded in the MBR (hence embedded in [.filename]#boot0#) describing the four standard PC \"partitions\".  [.filename]#boot0# resides in the filesystem as [.filename]#/boot/boot0#.  It is a small 512-byte file, and it is exactly what FreeBSD's installation procedure wrote to the hard disk's MBR if you chose the \"bootmanager\" option at installation time.  Indeed, [.filename]#boot0# _is_ the MBR."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3322287093586598056,
            "content_hash": -3322287093586598056,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:193",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 28,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 109,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1454419/?format=api",
            "priority": 100,
            "id": 1454427,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=51e4dd7d98e7e758",
            "url": "https://translate-dev.freebsd.org/api/units/1454427/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-10-30T17:43:54.640907Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "`init386()` is defined in [.filename]#sys/i386/i386/machdep.c# and performs low-level initialization specific to the i386 chip. The switch to protected mode was performed by the loader.  The loader has created the very first task, in which the kernel continues to operate.  Before looking at the code, consider the tasks the processor must complete to initialize protected mode execution:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8011202278981642321,
            "content_hash": 8011202278981642321,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1353",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 231,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 56,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1454421/?format=api",
            "priority": 100,
            "id": 1454428,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=ef2d82070e802851",
            "url": "https://translate-dev.freebsd.org/api/units/1454428/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-10-30T17:43:54.724663Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "      movw %sp,%si     # Source\n      movw $start,%di\t\t# Destination\n      movw $0x100,%cx\t\t# Word count\n      rep\t\t\t# Relocate\n      movsw\t\t\t#  code\n      movw %di,%bp\t\t# Address variables\n      movb $0x8,%cl\t\t# Words to clear\n      rep\t\t\t# Zero\n      stosw\t\t\t#  them\n      incb -0xe(%di)\t\t# Set the S field to 1\n      jmp main-LOAD+ORIGIN\t# Jump to relocated code\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1551518754634623925,
            "content_hash": 1551518754634623925,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:279",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 48,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 52,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1691894/?format=api",
            "priority": 100,
            "id": 1691909,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=95881a16485a6bb5",
            "url": "https://translate-dev.freebsd.org/api/units/1691909/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2024-09-14T18:21:36.917603Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "As [.filename]#boot0# is loaded by the BIOS to address `0x7C00`, it copies itself to address `0x600` and then transfers control there (recall that it was linked to execute at address `0x600`).  The source address, `0x7c00`, is copied to register `%si`.  The destination address, `0x600`, to register `%di`.  The number of words to copy, `256` (the program's size = 512 bytes), is copied to register `%cx`.  Next, the `rep` instruction repeats the instruction that follows, that is, `movsw`, the number of times dictated by the `%cx` register.  The `movsw` instruction copies the word pointed to by `%si` to the address pointed to by `%di`.  This is repeated another 255 times.  On each repetition, both the source and destination registers, `%si` and `%di`, are incremented by one.  Thus, upon completion of the 256-word (512-byte) copy, `%di` has the value `0x600`+`512`= `0x800`, and `%si` has the value `0x7c00`+`512`= `0x7e00`; we have thus completed the code _relocation_.  Since the last update of this document, the copy instructions have changed in the code, so instead of the movsb and stosb, movsw and stosw have been introduced, which copy 2 bytes(1 word) in one iteration."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 9094021431255175004,
            "content_hash": 9094021431255175004,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:292",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 50,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 189,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1691896/?format=api",
            "priority": 100,
            "id": 1691910,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=fe34744f3dc10f5c",
            "url": "https://translate-dev.freebsd.org/api/units/1691910/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2024-09-14T18:21:36.918603Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "Next, the destination register `%di` is copied to `%bp`.  `%bp` gets the value `0x800`.  The value `8` is copied to `%cl` in preparation for a new string operation (like our previous `movsw`).  Now, `stosw` is executed 8 times.  This instruction copies a `0` value to the address pointed to by the destination register (`%di`, which is `0x800`), and increments it.  This is repeated another 7 times, so `%di` ends up with value `0x810`.  Effectively, this clears the address range `0x800`-`0x80f`.  This range is used as a (fake) partition table for writing the MBR back to disk.  Finally, the sector field for the CHS addressing of this fake partition is given the value 1 and a jump is made to the main function from the relocated code.  Note that until this jump to the relocated code, any reference to an absolute address was avoided."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 6010043175083126999,
            "content_hash": 6010043175083126999,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:303",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 51,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 143,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1691898/?format=api",
            "priority": 100,
            "id": 1691911,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=d367f66cd79730d7",
            "url": "https://translate-dev.freebsd.org/api/units/1691911/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2024-09-14T18:21:36.919539Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "This first block of code is the entry point of the program.  It is where the BIOS transfers control.  First, it makes sure that the string operations autoincrement its pointer operands (the `cld` instruction) footnote:[When in doubt, we refer the reader to the official Intel manuals, which describe the exact semantics for each instruction.].  Then, as it makes no assumption about the state of the segment registers, it initializes them.  Finally, it sets the stack pointer register (`%sp`) to ($LOAD = address `0x7c00`), so we have a working stack."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 3999225427930208862,
            "content_hash": 3999225427930208862,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:263",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 46,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 89,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1827657/?format=api",
            "priority": 100,
            "id": 1827675,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=b7801a56807d5a5e",
            "url": "https://translate-dev.freebsd.org/api/units/1827675/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2025-11-08T16:43:33.120674Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "The last code block of [.filename]#boot1# enables access to memory above 1MB footnote:[This is necessary for legacy reasons.] and concludes with a jump to the starting point of the BTX server:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2499115827193768495,
            "content_hash": 2499115827193768495,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:723",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 124,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 31,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1827659/?format=api",
            "priority": 100,
            "id": 1827676,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=a2aea49a9c70ea2f",
            "url": "https://translate-dev.freebsd.org/api/units/1827676/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2025-11-08T16:43:33.125146Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/fr_FR/?format=api",
            "source": [
                "Although the sysinit framework is described in the extref:{developers-handbook}[Developers' Handbook], I will discuss the internals of it."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1131001361245395926,
            "content_hash": 1131001361245395926,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1533",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 270,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 17,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1827661/?format=api",
            "priority": 100,
            "id": 1827677,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/fr_FR/?checksum=8fb21fbee983dbd6",
            "url": "https://translate-dev.freebsd.org/api/units/1827677/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2025-11-08T16:43:33.132676Z"
        }
    ]
}