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

62 lines
1.2 KiB
C

#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,section(".libc_dev"))) const libc_device_file __libc_dev_##name_ =\
{\
.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,section(".libc_dev"))) const libc_device_file __libc_dev_##name_ =\
{\
.name=__libc_##name_,\
.open=open_,\
.close=close_,\
.putc=putc_,\
.getc=getc_,\
.write=write_,\
.read=read_,\
};
#define dev(name_) __libc_dev_##name_
const libc_device_file *libc_find_dev(const char *name);
#endif