Add comments to initramfs.c

Add comments to `init/initramfs.c` to explain the purpose of the file, functions, and major code blocks.

* Add a comment at the top of the file indicating the purpose of the file.
* Add comments before each function definition explaining its purpose.
* Add comments before each major code block explaining its purpose.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/torvalds/linux?shareId=XXXX-XXXX-XXXX-XXXX).
This commit is contained in:
RaiseYI 2024-11-01 18:20:53 +08:00
parent 6c52d4da1c
commit f5c104a600

View File

@ -1,3 +1,8 @@
/*
* This file contains the implementation of the initramfs, which is a temporary root filesystem used during the Linux kernel boot process.
* It is responsible for unpacking and populating the root filesystem from the initramfs image.
*/
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/init.h> #include <linux/init.h>
#include <linux/async.h> #include <linux/async.h>
@ -24,6 +29,11 @@
static __initdata bool csum_present; static __initdata bool csum_present;
static __initdata u32 io_csum; static __initdata u32 io_csum;
/*
* Write data to a file.
* This function writes the specified data to the given file, updating the file position.
* If checksum calculation is enabled, it updates the checksum as well.
*/
static ssize_t __init xwrite(struct file *file, const unsigned char *p, static ssize_t __init xwrite(struct file *file, const unsigned char *p,
size_t count, loff_t *pos) size_t count, loff_t *pos)
{ {
@ -578,6 +588,10 @@ extern unsigned long __initramfs_size;
static BIN_ATTR(initrd, 0440, sysfs_bin_attr_simple_read, NULL, 0); static BIN_ATTR(initrd, 0440, sysfs_bin_attr_simple_read, NULL, 0);
/*
* Reserve memory for the initrd.
* This function reserves the memory region for the initrd, ensuring it is not used for other purposes.
*/
void __init reserve_initrd_mem(void) void __init reserve_initrd_mem(void)
{ {
phys_addr_t start; phys_addr_t start;
@ -623,6 +637,10 @@ disable:
initrd_end = 0; initrd_end = 0;
} }
/*
* Free the memory used by the initrd.
* This function releases the memory region used by the initrd, making it available for other purposes.
*/
void __weak __init free_initrd_mem(unsigned long start, unsigned long end) void __weak __init free_initrd_mem(unsigned long start, unsigned long end)
{ {
#ifdef CONFIG_ARCH_KEEP_MEMBLOCK #ifdef CONFIG_ARCH_KEEP_MEMBLOCK
@ -688,6 +706,10 @@ static void __init populate_initrd_image(char *err)
} }
#endif /* CONFIG_BLK_DEV_RAM */ #endif /* CONFIG_BLK_DEV_RAM */
/*
* Populate the root filesystem.
* This function populates the root filesystem by unpacking the initramfs image.
*/
static void __init do_populate_rootfs(void *unused, async_cookie_t cookie) static void __init do_populate_rootfs(void *unused, async_cookie_t cookie)
{ {
/* Load the built in initramfs */ /* Load the built in initramfs */
@ -736,6 +758,10 @@ done:
static ASYNC_DOMAIN_EXCLUSIVE(initramfs_domain); static ASYNC_DOMAIN_EXCLUSIVE(initramfs_domain);
static async_cookie_t initramfs_cookie; static async_cookie_t initramfs_cookie;
/*
* Wait for the initramfs to be populated.
* This function waits for the initramfs to be fully populated before proceeding.
*/
void wait_for_initramfs(void) void wait_for_initramfs(void)
{ {
if (!initramfs_cookie) { if (!initramfs_cookie) {
@ -752,6 +778,10 @@ void wait_for_initramfs(void)
} }
EXPORT_SYMBOL_GPL(wait_for_initramfs); EXPORT_SYMBOL_GPL(wait_for_initramfs);
/*
* Populate the root filesystem.
* This function schedules the population of the root filesystem by unpacking the initramfs image.
*/
static int __init populate_rootfs(void) static int __init populate_rootfs(void)
{ {
initramfs_cookie = async_schedule_domain(do_populate_rootfs, NULL, initramfs_cookie = async_schedule_domain(do_populate_rootfs, NULL,