我有一个api函数,其描述如下

attach()使系统知道新设备或验证设备是否已连接 . 如果找到设备描述符且设备尚未连接,则将()链接到其文件管理器和设备驱动程序,并将其地址放在新的设备表条目中 . 如果附加失败,则返回-1并将相应的错误代码放在全局变量errno中 . name是指向设备描述符名称的指针 . mode是访问模式 .

我用 mount 系统调用实现了它 . 不知道这是不是正确的做法 . 我的代码是:

#define MOUNT_DIR               "/mnt/iso" 
#define FILE_SYSTEM             "ext2"
typedef struct devtab {
/* TODO this structure taken from mwosppc/SRC/DPIO/DEFS/io.h
    need to check which all fields required currently used only 
    dummy attribute here for compilation */
    u_int32
        v_fm_globs,             /* file manager total static globals pointer*/
        v_dr_globs,             /* driver globals pointer */
        v_rsrv[2];              /* reserved space */
} dev_list, *Dev_list;



dev_list *attach(const char *name,
                 int mode)
{
    dev_list * deviceList;
    FILE* ExecutionResult;
    int deviceCount;
    int deviceIndex[50];
    char cmdExecute[50], finalOutputCmd[50000], outputCmd[100];
    int i;
    int bytes = 0;
    char* temp = 0;
    switch(mode)
    {
        //case FAM_READ:
        case S_IREAD:
            mount(name, MOUNT_DIR, FILE_SYSTEM, MS_MGC_VAL | MS_RDONLY, "");
            break;
        case S_IWRITE:
        //case FAM_WRITE:
            mount(name, MOUNT_DIR, FILE_SYSTEM, MS_MGC_VAL, "");
            break;
        default:
            mount(name, MOUNT_DIR, FILE_SYSTEM, MS_MGC_VAL, "");
            break;
    }
    strcpy(cmdExecute, "lshw -short");
    ...parse output in deviceList....

    return  deviceList;
}

我的怀疑是:

  • 我想我应该返回为新设备创建的开发节点,以便另一个函数可以打开设备并对其进行读写操作?

  • 但是我如何获得已安装设备的dev节点?

  • 然后如何链接到文件管理器和设备驱动程序?是否需要链接到驱动程序或Linux自动执行此操作?

  • 挂载对所有类型的设备,块,串行,网络等都有用吗?

  • 挂载系统调用有什么作用?