4,465
社区成员




//代码位于 linux/fs/filesystem.c
//.....
int register_filesystem(struct file_system_type * fs)
{
int res = 0;
struct file_system_type ** p;
BUG_ON(strchr(fs- >name, '.'));
if (fs- >next)
return -EBUSY;
INIT_LIST_HEAD(&fs- >fs_supers);
write_lock(&file_systems_lock);
p = find_filesystem(fs- >name, strlen(fs- >name));
if (*p)
res = -EBUSY;
else
*p = fs;
write_unlock(&file_systems_lock);
return res;
}
//.....
static struct file_system_type **find_filesystem(const char *name, unsigned len)
{
struct file_system_type **p;
for (p=&file_systems; *p; p=&(*p)->next)
if (strlen((*p)->name) == len &&
strncmp((*p)->name, name, len) == 0)
break;
return p;
}
static struct file_system_type *find_filesystem(const char *name, unsigned len)
{
struct file_system_type *p;
for (p=file_systems; p; p=p->next)
if (strlen(p->name) == len &&
strncmp(p->name, name, len) == 0)
break;
return p;
}