linux c检测附加设备,加载和链接驱动程序,返回设备文件系统条目

时间:2016-09-29 10:44:27

标签: c linux file mount

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

  

连接()

     

使系统知道新设备或验证设备是否已连接。

     

如果找到设备描述符且设备尚未连接,则将()链接到其文件管理器和设备驱动程序,并将其地址放在新设备表中   条目。如果附加失败,则返回-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节点,以便另一个函数可以打开设备并对其进行读写操作?
  • 但是我如何获得已安装设备的dev节点?
  • 那么如何链接到文件管理器和设备驱动程序?它需要链接到驱动程序还是linux自动执行此操作?
  • mount会对所有类型的设备,块,串行,网络等有用吗?
  • 挂载系统调用做什么?

0 个答案:

没有答案