git: e3f669870fe2 - main - cdev: dev_copyname copies a character device's name to a buffer
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 27 Mar 2025 20:48:40 UTC
The branch main has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=e3f669870fe255ad4535d2a793e79e8ad878177f
commit e3f669870fe255ad4535d2a793e79e8ad878177f
Author: John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2025-03-27 20:43:15 +0000
Commit: John Baldwin <jhb@FreeBSD.org>
CommitDate: 2025-03-27 20:43:15 +0000
cdev: dev_copyname copies a character device's name to a buffer
This function can be called on a cdev that might have been destroyed
unlike devtoname.
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D49334
---
sys/kern/kern_conf.c | 13 +++++++++++++
sys/sys/conf.h | 1 +
2 files changed, 14 insertions(+)
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c
index f9d406548d10..1f0772e97030 100644
--- a/sys/kern/kern_conf.c
+++ b/sys/kern/kern_conf.c
@@ -1245,6 +1245,19 @@ devtoname(struct cdev *dev)
return (dev->si_name);
}
+void
+dev_copyname(struct cdev *dev, char *path, size_t len)
+{
+ struct cdevsw *csw;
+ int ref;
+
+ csw = dev_refthread(dev, &ref);
+ if (csw != NULL) {
+ strlcpy(path, dev->si_name, len);
+ dev_relthread(dev, ref);
+ }
+}
+
int
dev_stdclone(char *name, char **namep, const char *stem, int *unit)
{
diff --git a/sys/sys/conf.h b/sys/sys/conf.h
index 8970006c7089..1646aa108701 100644
--- a/sys/sys/conf.h
+++ b/sys/sys/conf.h
@@ -277,6 +277,7 @@ void destroy_dev(struct cdev *_dev);
int destroy_dev_sched(struct cdev *dev);
int destroy_dev_sched_cb(struct cdev *dev, void (*cb)(void *), void *arg);
void destroy_dev_drain(struct cdevsw *csw);
+void dev_copyname(struct cdev *dev, char *path, size_t len);
struct cdevsw *dev_refthread(struct cdev *_dev, int *_ref);
struct cdevsw *devvn_refthread(struct vnode *vp, struct cdev **devp, int *_ref);
void dev_relthread(struct cdev *_dev, int _ref);