Files
player/Project/Src/lib/libc.h

62 lines
1.1 KiB
C
Raw Normal View History

2025-06-27 00:32:57 +08:00
#ifndef libc_h__
#define libc_h__
// 定义设备文件
typedef struct
{
const char *name;
int (*open)(void);
int (*close)(void);
int (*putc)(int);
int (*getc)(void);
int (*write)(const void *,int);
int (*read)(void *,int);
}libc_device_file;
// 使用这个宏用于初始化
#define extern_device(name_,putc_,getc_,write_,read_)\
const char __libc_##name_[] __attribute__((section("name"))) = #name_;\
__attribute__((used)) const libc_device_file __libc_dev_##name_ __attribute__((section("libc_dev")))=\
{\
.name=__libc_##name_,\
.putc=putc_,\
.getc=getc_,\
.write=write_,\
.read=read_,\
};
// 使用这个宏用于初始化,包括打开关闭函数
#define extern_device2(name_,open_,close_,putc_,getc_,write_,read_)\
const char __libc_##name_[] __attribute__((section("name"))) = #name_;\
__attribute__((used)) const libc_device_file __libc_dev_##name_ __attribute__((section("libc_dev")))=\
{\
.name=__libc_##name_,\
.open=open_,\
.close=close_,\
.putc=putc_,\
.getc=getc_,\
.write=write_,\
.read=read_,\
};
#define dev(name_) __libc_dev_##name_
#endif