From a4ef1c5f9271de21aa01d2b40033a9971a7b4ade Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Tue, 9 Apr 2002 15:13:42 +0000 Subject: [PATCH] Introduce the convenience function g_getattr() and make it DWIM. Sponsored by: DARPA & NAI Labs. --- sys/geom/geom.h | 2 ++ sys/geom/geom_subr.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/sys/geom/geom.h b/sys/geom/geom.h index 4c9b3f0664bb..6dfe745eadba 100644 --- a/sys/geom/geom.h +++ b/sys/geom/geom.h @@ -193,6 +193,8 @@ void g_destroy_geom(struct g_geom *pp); void g_destroy_provider(struct g_provider *pp); void g_dettach(struct g_consumer *cp); void g_error_provider(struct g_provider *pp, int error); +int g_getattr__(const char *attr, struct g_consumer *cp, void *var, int len); +#define g_getattr(a, c, v) g_getattr__((a), (c), (v), sizeof *(v)) int g_haveattr(struct bio *bp, char *attribute, void *val, int len); int g_haveattr_int(struct bio *bp, char *attribute, int val); int g_haveattr_off_t(struct bio *bp, char *attribute, off_t val); diff --git a/sys/geom/geom_subr.c b/sys/geom/geom_subr.c index b9c6236ce10b..1bc2ced8c6a4 100644 --- a/sys/geom/geom_subr.c +++ b/sys/geom/geom_subr.c @@ -640,3 +640,16 @@ g_insert_geom(char *class, struct g_consumer *cp) return (gp); } +int +g_getattr__(const char *attr, struct g_consumer *cp, void *var, int len) +{ + int error, i; + + i = len; + error = g_io_getattr(attr, cp, &i, var); + if (error) + return (error); + if (i != len) + return (EINVAL); + return (0); +}