QNX操作系统

QNX之编写资源管理器(三)

2019-01-09  本文已影响0人  Loyen

QNX相关历史文章:

POSIX-Layer Data Structures

这篇文章主要讲述和POSIX-Layer例程支持相关的几个关键数据结构。

1. Introduction

资源管理器定义了三个与POSIX-Layer相关的数据结构:

Multiple clients with multiple OCBs, all linked to one mount structure

2. iofunc_ocb_t结构

OCB(Open Control Block)结构,用于维护客户端和资源管理器之间特定会话的状态信息,在open()时创建,在close()时退出。这个数据结构用于iofunc layer中的帮助函数。该结构至少包含以下内容:

typedef struct _iofunc_ocb {
    IOFUNC_ATTR_T   *attr;
    int32_t         ioflag;
    off_t           offset;
    uint16_t        sflag;
    uint16_t        flags;
} iofunc_ocb_t;

3. iofunc_attr_t结构

这个结构为资源管理器提供了设备的特征,与OCB结构结合使用。

typedef struct _iofunc_attr {
    IOFUNC_MOUNT_T            *mount;
    uint32_t                  flags;
    int32_t                   lock_tid;
    uint16_t                  lock_count;
    uint16_t                  count;
    uint16_t                  rcount;
    uint16_t                  wcount;
    uint16_t                  rlocks;
    uint16_t                  wlocks;
    struct _iofunc_mmap_list  *mmap_list;
    struct _iofunc_lock_list  *lock_list;
    void                      *list;
    uint32_t                  list_size;
    off_t                     nbytes;
    ino_t                     inode;
    uid_t                     uid;
    gid_t                     gid;
    time_t                    mtime;
    time_t                    atime;
    time_t                    ctime;
    mode_t                    mode;
    nlink_t                   nlink;
    dev_t                     rdev;
} iofunc_attr_t;

4. iofunc_mount_t结构(可选)

这个结构中的成员,尤其是confflags,可以修改某些iofunc层函数的行为。这个结构中至少包含以下内容:

typedef struct _iofunc_mount {
    uint32_t            flags;
    uint32_t            conf;
    dev_t               dev;
    int32_t             blocksize;
    iofunc_funcs_t      *funcs;
} iofunc_mount_t;
上一篇下一篇

猜你喜欢

热点阅读