/** * kernfs_get_active - get an active reference to kernfs_node * @kn: kernfs_node to get an active reference to * * Get an active reference of @kn. This function is noop if @kn * is NULL. * * RETURNS: * Pointer to @kn on success, NULL on failure. */ struct kernfs_node *kernfs_get_active(struct kernfs_node *kn) { if (unlikely(!kn)) return NULL; if (!atomic_inc_unless_negative(&kn->active)) return NULL; if (kn->flags & KERNFS_LOCKDEP) rwsem_acquire_read(&kn->dep_map, 0, 1, _RET_IP_); return kn; }
/** * sysfs_get_active - get an active reference to sysfs_dirent * @sd: sysfs_dirent to get an active reference to * * Get an active reference of @sd. This function is noop if @sd * is NULL. * * RETURNS: * Pointer to @sd on success, NULL on failure. */ struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd) { if (unlikely(!sd)) return NULL; if (!atomic_inc_unless_negative(&sd->s_active)) return NULL; if (likely(!sysfs_ignore_lockdep(sd))) rwsem_acquire_read(&sd->dep_map, 0, 1, _RET_IP_); return sd; }
/** * kdbus_node_acquire() - Acquire an active ref on a node * @node: The node * * This acquires an active-reference to @node. This will only succeed if the * node is active. You must release this active reference via * kdbus_node_release() again. * * See the introduction to "active references" for more details. * * Return: %true if @node was non-NULL and active */ bool kdbus_node_acquire(struct kdbus_node *node) { return node && atomic_inc_unless_negative(&node->active); }
static bool cxl_afu_configured_get(struct cxl_afu *afu) { return atomic_inc_unless_negative(&afu->configured_state); }