aboutsummaryrefslogtreecommitdiff
path: root/sys/fs
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2024-03-22 02:58:00 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2024-03-23 06:59:00 +0000
commitd3efbe0132b24e8660df836905cda7662f85a154 (patch)
tree8cd85f6040b57d1a432b6ebf4e0cb142616fc2f9 /sys/fs
parent15bfd7cf27898b5d34e9fa08c10f9cc69da05977 (diff)
downloadsrc-d3efbe0132b24e8660df836905cda7662f85a154.tar.gz
src-d3efbe0132b24e8660df836905cda7662f85a154.zip
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/devfs/devfs_vnops.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index 3b8a624fe620..a35f6dbf9520 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -177,6 +177,26 @@ devfs_set_cdevpriv(void *priv, d_priv_dtor_t *priv_dtr)
return (error);
}
+int
+devfs_foreach_cdevpriv(struct cdev *dev, int (*cb)(void *data, void *arg),
+ void *arg)
+{
+ struct cdev_priv *cdp;
+ struct cdev_privdata *p;
+ int error;
+
+ cdp = cdev2priv(dev);
+ error = 0;
+ mtx_lock(&cdevpriv_mtx);
+ LIST_FOREACH(p, &cdp->cdp_fdpriv, cdpd_list) {
+ error = cb(p->cdpd_data, arg);
+ if (error != 0)
+ break;
+ }
+ mtx_unlock(&cdevpriv_mtx);
+ return (error);
+}
+
void
devfs_destroy_cdevpriv(struct cdev_privdata *p)
{