57 lines
1.7 KiB
Cheetah
57 lines
1.7 KiB
Cheetah
/* Deshab SDK 驱动入口模板
|
|||
|
|
*
|
||
|
|
* 由 scaffold/new-module.ps1 生成时自动替换:
|
||
|
|
* {{MODULE_NAME}} -> 驱动名 (如 mydriver)
|
||
|
|
* {{CLASS}} -> DKM_CLASS_* 类别 (如 DKM_CLASS_MISC)
|
||
|
|
* {{STAGE}} -> 加载阶段 0-3
|
||
|
|
*
|
||
|
|
* 展示最小 DKM 驱动框架: driver_desc + driver_init + driver_exit。
|
||
|
|
* 构建方式: clang -c main.c -> ld.lld -r -o {{MODULE_NAME}}.drv main.o
|
||
|
|
* (见 scaffold/driver/build.ps1 片段或 build.ps1 的 Build-DkmDriver)
|
||
|
|
*/
|
||
|
|
#include "deshab/driver.h"
|
||
|
|
#include "deshab/serial.h"
|
||
|
|
|
||
|
|
static const dkm_log_api *g_log = 0;
|
||
|
|
|
||
|
|
static const char *const g_depends[] = { 0 };
|
||
|
|
static const char *const g_provides[] = { "{{MODULE_NAME}}" };
|
||
|
|
|
||
|
|
__attribute__((visibility("default")))
|
||
|
|
const dkm_driver_desc driver_desc = {
|
||
|
|
.magic = DKM_DRIVER_MAGIC,
|
||
|
|
.abi_version = DKM_ABI_VERSION,
|
||
|
|
.desc_size = sizeof(dkm_driver_desc),
|
||
|
|
.name = "{{MODULE_NAME}}",
|
||
|
|
.version = "1.0",
|
||
|
|
.vendor = "Deshab",
|
||
|
|
.driver_class = {{CLASS}},
|
||
|
|
.stage = {{STAGE}},
|
||
|
|
.flags = 0,
|
||
|
|
.priority = 100,
|
||
|
|
.depends = g_depends,
|
||
|
|
.depends_count = 0,
|
||
|
|
.provides = g_provides,
|
||
|
|
.provides_count = 1,
|
||
|
|
.min_kernel_abi = DKM_KERNEL_API_VERSION,
|
||
|
|
.feature_bits = 0,
|
||
|
|
};
|
||
|
|
|
||
|
|
__attribute__((visibility("default")))
|
||
|
|
int driver_init(const dkm_kernel_api *api, dkm_driver_handle *handle) {
|
||
|
|
(void)handle;
|
||
|
|
if (!api || !api->log) return -1;
|
||
|
|
g_log = api->log;
|
||
|
|
g_log->info("[{{MODULE_NAME}}] init begin");
|
||
|
|
/* TODO: 驱动初始化逻辑 */
|
||
|
|
g_log->info("[{{MODULE_NAME}}] driver ready");
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
__attribute__((visibility("default")))
|
||
|
|
int driver_exit(dkm_driver_handle *handle) {
|
||
|
|
(void)handle;
|
||
|
|
if (g_log) g_log->info("[{{MODULE_NAME}}] exit");
|
||
|
|
return 0;
|
||
|
|
}
|