|
@@ -280,18 +280,18 @@ tells configfs to make the subsystem appear in the file tree.
|
|
|
|
|
|
struct configfs_subsystem {
|
|
|
struct config_group su_group;
|
|
|
- struct semaphore su_sem;
|
|
|
+ struct mutex su_mutex;
|
|
|
};
|
|
|
|
|
|
int configfs_register_subsystem(struct configfs_subsystem *subsys);
|
|
|
void configfs_unregister_subsystem(struct configfs_subsystem *subsys);
|
|
|
|
|
|
- A subsystem consists of a toplevel config_group and a semaphore.
|
|
|
+ A subsystem consists of a toplevel config_group and a mutex.
|
|
|
The group is where child config_items are created. For a subsystem,
|
|
|
this group is usually defined statically. Before calling
|
|
|
configfs_register_subsystem(), the subsystem must have initialized the
|
|
|
group via the usual group _init() functions, and it must also have
|
|
|
-initialized the semaphore.
|
|
|
+initialized the mutex.
|
|
|
When the register call returns, the subsystem is live, and it
|
|
|
will be visible via configfs. At that point, mkdir(2) can be called and
|
|
|
the subsystem must be ready for it.
|
|
@@ -303,7 +303,7 @@ subsystem/group and the simple_child item in configfs_example.c It
|
|
|
shows a trivial object displaying and storing an attribute, and a simple
|
|
|
group creating and destroying these children.
|
|
|
|
|
|
-[Hierarchy Navigation and the Subsystem Semaphore]
|
|
|
+[Hierarchy Navigation and the Subsystem Mutex]
|
|
|
|
|
|
There is an extra bonus that configfs provides. The config_groups and
|
|
|
config_items are arranged in a hierarchy due to the fact that they
|
|
@@ -314,19 +314,19 @@ and config_item->ci_parent structure members.
|
|
|
|
|
|
A subsystem can navigate the cg_children list and the ci_parent pointer
|
|
|
to see the tree created by the subsystem. This can race with configfs'
|
|
|
-management of the hierarchy, so configfs uses the subsystem semaphore to
|
|
|
+management of the hierarchy, so configfs uses the subsystem mutex to
|
|
|
protect modifications. Whenever a subsystem wants to navigate the
|
|
|
hierarchy, it must do so under the protection of the subsystem
|
|
|
-semaphore.
|
|
|
+mutex.
|
|
|
|
|
|
-A subsystem will be prevented from acquiring the semaphore while a newly
|
|
|
+A subsystem will be prevented from acquiring the mutex while a newly
|
|
|
allocated item has not been linked into this hierarchy. Similarly, it
|
|
|
-will not be able to acquire the semaphore while a dropping item has not
|
|
|
+will not be able to acquire the mutex while a dropping item has not
|
|
|
yet been unlinked. This means that an item's ci_parent pointer will
|
|
|
never be NULL while the item is in configfs, and that an item will only
|
|
|
be in its parent's cg_children list for the same duration. This allows
|
|
|
a subsystem to trust ci_parent and cg_children while they hold the
|
|
|
-semaphore.
|
|
|
+mutex.
|
|
|
|
|
|
[Item Aggregation Via symlink(2)]
|
|
|
|