我有一个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自动执行此操作?
-
挂载对所有类型的设备,块,串行,网络等都有用吗?
-
挂载系统调用有什么作用?