struct firmware
时间: 2023-08-29 17:09:33 浏览: 60
"struct firmware" 是一个 Linux 内核中的结构体,用于处理设备固件的加载和卸载。它包含设备固件的名称、版本、大小、数据等信息。在驱动程序中,可以使用 "request_firmware()" 函数来请求加载一个设备固件,并使用 "release_firmware()" 函数来卸载该设备固件。
相关问题
request_firmware_nowait原型
`request_firmware_nowait` 是 Linux 内核中的一个函数,用于异步请求固件文件。其原型定义在文件 `include/linux/firmware.h` 中,如下所示:
```c
int request_firmware_nowait(bool uevent, const char *name, struct device *device,
const struct firmware **firmware, gfp_t gfp_flags,
void *context);
```
参数说明:
- `uevent`: 是否发送 `uevent` 通知。
- `name`: 固件文件名。
- `device`: 设备对象。
- `firmware`: 固件文件指针的指针。
- `gfp_flags`: 分配内存时使用的标志。
- `context`: 回调函数的上下文。
返回值:
- 成功:0
- 失败:错误码(负数)
注意事项:
- 固件文件名 `name` 不应包含路径信息。
- `request_firmware_nowait` 函数是异步的,调用成功后,固件文件不会立即被加载,而是需要等待异步回调函数被执行。
- 回调函数的原型为 `void (*)(const struct firmware *fw, void *context)`,其中 `fw` 参数是固件文件指针,`context` 参数是回调函数的上下文。
- 如果 `uevent` 参数为真,则会发送一个 `uevent` 通知,以通知用户空间固件文件已经被加载。
firmware_request_nowarn的用法
firmware_request_nowarn是一个Linux内核中的函数,用于请求加载某个设备的固件(firmware)。该函数与firmware_request不同之处在于,如果请求的固件不存在时,它不会产生警告消息。
该函数的使用方式如下:
```c
int firmware_request_nowarn(const struct firmware **fw, const char *name, struct device *device);
```
其中,参数说明如下:
- fw:指向指针的指针,用于接收请求的固件数据。
- name:请求的固件名称。
- device:指向该设备的指针。
该函数返回一个整数值,表示请求固件的状态:
- 0:成功请求固件。
- -ENOENT:请求的固件不存在。
- 其他负值:请求固件失败。
需要注意的是,在使用该函数前,需要先通过firmware_request_cache函数对固件进行缓存。