我有一个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;
}
我的怀疑是: