41 Star 204 Fork 53

张明亮 / harmony-raspberry

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
2.5、块设备驱动程序.md 1.40 KB
一键复制 编辑 原始数据 按行查看 历史
张明亮 提交于 2021-01-25 11:27 . _

third_party\NuttX\fs\driver\fs_registerblockdriver.c

注册一个块设备,

int register_blockdriver(FAR const char *path,						//文件名
                         FAR const struct block_operations *bops,	//结构体
                         mode_t mode, FAR void *priv)
{}

kernel\liteos_a\fs\include\fs\fs.h

块设备操作的结构体,

struct block_operations
{
  int     (*open)(FAR struct inode *inode);
  int     (*close)(FAR struct inode *inode);
  ssize_t (*read)(FAR struct inode *inode, FAR unsigned char *buffer,
            unsigned long long start_sector, unsigned int nsectors);
  ssize_t (*write)(FAR struct inode *inode, FAR const unsigned char *buffer,
            unsigned long long start_sector, unsigned int nsectors);
  int     (*geometry)(FAR struct inode *inode, FAR struct geometry *geometry); //获取内部结构
  int     (*ioctl)(FAR struct inode *inode, int cmd, unsigned long arg);
  int     (*unlink)(FAR struct inode *inode);
};
struct geometry //几何设备
{
  bool   geo_available;    /* true: The device is available 是否可用 */
  bool   geo_mediachanged; /* true: The media has changed since last query */
  bool   geo_writeenabled; /* true: It is okay to write to this device 是否可写 */
  unsigned long long geo_nsectors;     /* Number of sectors on the device 多少个扇区*/
  size_t geo_sectorsize;   /* Size of one sector 每个扇区的大小*/
};
1
https://gitee.com/liangzili/harmony-raspberry.git
git@gitee.com:liangzili/harmony-raspberry.git
liangzili
harmony-raspberry
harmony-raspberry
master

搜索帮助