Units
Translation components API.
See the Weblate's Web API documentation for detailed description of the API.
GET /api/translations/documentation/booksarch-handbookboot_index/nl_NL/units/?format=api&page=6
https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/units/?format=api&page=5", "results": [ { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?format=api", "source": [ "sys/i386/i386/machdep.c:\n\t/* Init basic tunables, hz etc */\n\tinit_param1();\n" ], "previous_source": "", "target": [ "" ], "id_hash": -3320089471727760266, "content_hash": -3320089471727760266, "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1369", "context": "", "note": "type: delimited block . 4", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 241, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 9, "source_unit": "https://translate-dev.freebsd.org/api/units/1436683/?format=api", "priority": 100, "id": 1438124, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=51ecac374f270c76", "url": "https://translate-dev.freebsd.org/api/units/1438124/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.351796Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?format=api", "source": [ "`init_param1()` is defined in [.filename]#sys/kern/subr_param.c#. That file has a number of sysctls, and two functions, `init_param1()` and `init_param2()`, that are called from `init386()`:" ], "previous_source": "", "target": [ "" ], "id_hash": 6597620447322619591, "content_hash": 6597620447322619591, "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1373", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 242, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 23, "source_unit": "https://translate-dev.freebsd.org/api/units/1436685/?format=api", "priority": 100, "id": 1438125, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=db8f74d75584bec7", "url": "https://translate-dev.freebsd.org/api/units/1438125/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.356462Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?format=api", "source": [ "sys/kern/subr_param.c:\n\thz = -1;\n\tTUNABLE_INT_FETCH(\"kern.hz\", &hz);\n\tif (hz == -1)\n\t\thz = vm_guest > VM_GUEST_NO ? HZ_VM : HZ;\n" ], "previous_source": "", "target": [ "" ], "id_hash": -217867315881781991, "content_hash": -217867315881781991, "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1381", "context": "", "note": "type: delimited block . 4", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 243, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 19, "source_unit": "https://translate-dev.freebsd.org/api/units/1436687/?format=api", "priority": 100, "id": 1438126, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=7cf9fad49cb2d519", "url": "https://translate-dev.freebsd.org/api/units/1438126/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.362396Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?format=api", "source": [ "Sysctl `kern.hz` is the system clock tick. Additionally, these sysctls are set by `init_param1()`: `kern.maxswzone, kern.maxbcache, kern.maxtsiz, kern.dfldsiz, kern.maxdsiz, kern.dflssiz, kern.maxssiz, kern.sgrowsiz`." ], "previous_source": "", "target": [ "" ], "id_hash": 4368720816864920745, "content_hash": 4368720816864920745, "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1393", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 246, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 22, "source_unit": "https://translate-dev.freebsd.org/api/units/1436689/?format=api", "priority": 100, "id": 1438127, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=bca0d06fbc1684a9", "url": "https://translate-dev.freebsd.org/api/units/1438127/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.374254Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?format=api", "source": [ "Then `init386()` prepares the Global Descriptors Table (GDT). Every task on an x86 is running in its own virtual address space, and this space is addressed by a segment:offset pair. Say, for instance, the current instruction to be executed by the processor lies at CS:EIP, then the linear virtual address for that instruction would be \"the virtual address of code segment CS\" + EIP. For convenience, segments begin at virtual address 0 and end at a 4GB boundary. Therefore, the instruction's linear virtual address for this example would just be the value of EIP. Segment registers such as CS, DS etc are the selectors, i.e., indexes, into GDT (to be more precise, an index is not a selector itself, but the INDEX field of a selector). FreeBSD's GDT holds descriptors for 15 selectors per CPU:" ], "previous_source": "", "target": [ "" ], "id_hash": -1500275163722055164, "content_hash": -1500275163722055164, "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1401", "context": "", "note": "type: Plain text", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 247, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 135, "source_unit": "https://translate-dev.freebsd.org/api/units/1436691/?format=api", "priority": 100, "id": 1438128, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=6b2df3aff9018204", "url": "https://translate-dev.freebsd.org/api/units/1438128/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.379162Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?format=api", "source": [ "sys/i386/i386/machdep.c:\nunion descriptor gdt0[NGDT];\t/* initial global descriptor table */\nunion descriptor *gdt = gdt0;\t/* global descriptor table */\n" ], "previous_source": "", "target": [ "" ], "id_hash": 4014185918783757256, "content_hash": 4014185918783757256, "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1407", "context": "", "note": "type: delimited block . 4", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 248, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 20, "source_unit": "https://translate-dev.freebsd.org/api/units/1436693/?format=api", "priority": 100, "id": 1438129, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=b7b540d3377b1bc8", "url": "https://translate-dev.freebsd.org/api/units/1438129/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.388328Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1432", "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": 1438130, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=abdd6a2dfb4b2b87", "url": "https://translate-dev.freebsd.org/api/units/1438130/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.454928Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1436", "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": 1438131, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=0e88bc238246ee10", "url": "https://translate-dev.freebsd.org/api/units/1438131/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.460382Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1444", "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": 1438132, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=e3bd3f8385da60f8", "url": "https://translate-dev.freebsd.org/api/units/1438132/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.467399Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1454", "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": 1438133, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=7c269717e5c44fee", "url": "https://translate-dev.freebsd.org/api/units/1438133/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.475547Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1460", "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": 1438134, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=dd99edcc96f29880", "url": "https://translate-dev.freebsd.org/api/units/1438134/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.479869Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1476", "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": 1438135, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=9becf7425da2daf8", "url": "https://translate-dev.freebsd.org/api/units/1438135/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.552767Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1482", "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": 1438136, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=a6a1b80a78e4fdc5", "url": "https://translate-dev.freebsd.org/api/units/1438136/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.560349Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1491", "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": 1438137, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=514d69670ecf8d59", "url": "https://translate-dev.freebsd.org/api/units/1438137/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.565029Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1496", "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": 1438138, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=5e88c5438206c253", "url": "https://translate-dev.freebsd.org/api/units/1438138/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.569571Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1504", "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": 1438139, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=f45ef2c1db04209d", "url": "https://translate-dev.freebsd.org/api/units/1438139/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.574130Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1508", "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": 1438140, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=c700140a0715465b", "url": "https://translate-dev.freebsd.org/api/units/1438140/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.581525Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1512", "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": 1438141, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=f299645159a2f710", "url": "https://translate-dev.freebsd.org/api/units/1438141/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.651597Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1521", "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": 1438142, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=744c92ac77b2ced6", "url": "https://translate-dev.freebsd.org/api/units/1438142/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.661283Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1535", "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": 1438143, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=7fd9d2bb9e144737", "url": "https://translate-dev.freebsd.org/api/units/1438143/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.675303Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1546", "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": 1438144, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=faa5027c65b9d345", "url": "https://translate-dev.freebsd.org/api/units/1438144/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.681185Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1550", "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": 1438145, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=9fb15dc58e58c887", "url": "https://translate-dev.freebsd.org/api/units/1438145/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.754055Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1554", "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": 1438146, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=c00c4237b9168bea", "url": "https://translate-dev.freebsd.org/api/units/1438146/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.761879Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1562", "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": 1438147, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=43cded58069848b7", "url": "https://translate-dev.freebsd.org/api/units/1438147/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.766225Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1566", "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": 1438148, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=5ae8db85c46b81cd", "url": "https://translate-dev.freebsd.org/api/units/1438148/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.770219Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1569", "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": 1438149, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=5ee378512b9457ad", "url": "https://translate-dev.freebsd.org/api/units/1438149/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.774138Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1575", "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": 1438150, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=fc4cb8cccd193c53", "url": "https://translate-dev.freebsd.org/api/units/1438150/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.778898Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1579", "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": 1438151, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=1ef7061ac4a376f6", "url": "https://translate-dev.freebsd.org/api/units/1438151/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.782469Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1591", "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": 1438152, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=09013756a2790b95", "url": "https://translate-dev.freebsd.org/api/units/1438152/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.786499Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1595", "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": 1438153, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=c14a827c9a4b025b", "url": "https://translate-dev.freebsd.org/api/units/1438153/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.790267Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1597", "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": 1438154, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=a032e251796c8b03", "url": "https://translate-dev.freebsd.org/api/units/1438154/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.851639Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1602", "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": 1438155, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=4ab52807d3cbb52a", "url": "https://translate-dev.freebsd.org/api/units/1438155/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.863608Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1605", "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": 1438156, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=efee70a48a8fdf59", "url": "https://translate-dev.freebsd.org/api/units/1438156/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.867929Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1615", "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": 1438157, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=7c4b77a91efba58e", "url": "https://translate-dev.freebsd.org/api/units/1438157/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.872072Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1620", "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": 1438158, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=30007ca0590eb6bb", "url": "https://translate-dev.freebsd.org/api/units/1438158/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.884446Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1632", "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": 1438159, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=48336877f1cafb59", "url": "https://translate-dev.freebsd.org/api/units/1438159/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.889711Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1637", "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": 1438160, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=fd3c5501488f925c", "url": "https://translate-dev.freebsd.org/api/units/1438160/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.954141Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1650", "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": 1438161, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=bcb33b0ad6dbfc1b", "url": "https://translate-dev.freebsd.org/api/units/1438161/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:00.963843Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1683", "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": 1438162, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=892504e4db7f35cb", "url": "https://translate-dev.freebsd.org/api/units/1438162/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:01.056336Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1689", "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": 1438163, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=b813f1c0781f8c5b", "url": "https://translate-dev.freebsd.org/api/units/1438163/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:01.061119Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1699", "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": 1438164, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=992bfda88037c16c", "url": "https://translate-dev.freebsd.org/api/units/1438164/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-07-08T03:00:01.066520Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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": 1454435, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=51e4dd7d98e7e758", "url": "https://translate-dev.freebsd.org/api/units/1454435/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-10-30T17:43:57.330054Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/nl_NL/?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:1351", "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": 1454436, "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/nl_NL/?checksum=ef2d82070e802851", "url": "https://translate-dev.freebsd.org/api/units/1454436/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2022-10-30T17:43:57.411967Z" } ] }{ "count": 293, "next": null, "previous": "