Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

App-Core

App-Core 4 是面向 Linux/POSIX C11 应用的可组合基础库。它将公共基础设施、模块生命周期和进程内通信 拆成可独立安装、独立链接的目标,借鉴 Linux 内核在分层、静态发现、依赖管理、引用计数、有界队列和 故障回滚方面的设计思想,但不实现内核、网络协议栈、文件系统、驱动或 RTOS 兼容层。

提供的基础能力

领域 框架机制 主要保证
组件治理 sys_component init → start → stop → deinit、依赖排序、required/optional、逆序回滚
控制面 sys_service 模块/接口 ID、ABI 和操作表大小校验、安全注销
消息面 sys_event 同步反馈、有界异步队列、ABI 标记、退订屏障和统计
数据面 sys_channel 预分配缓冲池、引用计数、零 payload 拷贝、有界背压和丢弃策略
进程运行时 sys_runtime signalfd/eventfd/poll 驱动的 SIGINT、SIGTERM 和程序化退出
并发治理 sys_thread 线程命名、协作停止、超时 join、运行及未回收句柄统计
可观测性 sys_log、状态快照 统一日志、稳定错误文本、组件/服务/事件/通道统计
构建治理 *.module 清单 模块 ID、配置、源码和依赖的单一构建事实源

源码按职责放在三个目录中:

libs/foundation/     错误类型、日志、受管线程
libs/module/         组件生命周期、进程运行时、模块状态
libs/communication/  服务、事件、数据通道及通信生命周期

modulecommunication 互不链接,只共同依赖 foundation。因此只需要通信机制的项目无需引入模块 发现与生命周期代码,只需要模块治理的项目也无需启动事件线程或链接通道实现。

网络、存储、媒体和设备访问继续复用 Linux 的 socket、epoll、io_uring、文件描述符、标准协议帧及 成熟第三方库。App-Core 负责这些业务模块的生命周期、契约、通信和可诊断性,不复制已有系统能力。

快速开始

./build.sh
ctest --test-dir output --output-on-failure
./output/app_core

常用构建入口:

./build.sh menuconfig
./build.sh release
./tools/ci.sh quick
./tools/ci.sh full

模块接入

每个应用模块在 app/features/ 中提供一个清单,例如:

name=example
id=0x0600
config=ENABLE_EXAMPLE
prompt=启用 Example 模块
default=n
sources=example_mod.c
depends=ENABLE_WIFI

CMake 和 menuconfig.py 会拒绝重复 ID/名称/配置项、未知字段、越界 ID、不存在的源码、未知依赖和 依赖环。稳定模块 ID 发布后不得复用或改义。

安装和复用

cmake -S . -B output -DCMAKE_BUILD_TYPE=Release -DAPP_CORE_BUILD_EXAMPLE=OFF
cmake --build output --parallel
cmake --install output --prefix /opt/app-core

下游 CMake 项目:

find_package(AppCore 4 REQUIRED)

# 三选一:
target_link_libraries(module_app PRIVATE AppCore::module)
target_link_libraries(bus_app PRIVATE AppCore::communication)
target_link_libraries(full_app PRIVATE AppCore::framework)

AppCore::framework 是兼容完整应用的组合目标,等价于同时链接 AppCore::moduleAppCore::communication,但两个库的生命周期仍需显式管理:先调用 sys_communication_init(),再调用 sys_core_init();关闭时按相反顺序执行。

详细架构边界见 docs/architecture.md,开发与构建标准见 docs/build.md,面向新人的完整框架与通信机制说明见 docs/framework-design-guide.md,通信方案专项评审见 docs/communication-solution-review.md。历史接续信息见 docs/project-memory.md,测试项目和正式准入说明见 docs/testing-guide.md

About

模仿内核模块的module_init模块架构设计的框架,用于维护多模块软件

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages