[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 02/14] xen/sched: Constify name and opt_name in struct scheduler
On 06.04.2021 20:24, Julien Grall wrote: > Hi Jan, > > On 06/04/2021 09:07, Jan Beulich wrote: >> On 05.04.2021 17:57, Julien Grall wrote: >>> From: Julien Grall <jgrall@xxxxxxxxxx> >>> >>> Both name and opt_name are pointing to literal string. So mark both of >>> the fields as const. >>> >>> Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx> >> >> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> >> albeit ... >> >>> --- a/xen/common/sched/private.h >>> +++ b/xen/common/sched/private.h >>> @@ -272,8 +272,8 @@ static inline spinlock_t >>> *pcpu_schedule_trylock(unsigned int cpu) >>> } >>> >>> struct scheduler { >>> - char *name; /* full name for this scheduler */ >>> - char *opt_name; /* option name for this scheduler */ >>> + const char *name; /* full name for this scheduler */ >>> + const char *opt_name; /* option name for this scheduler */ >> >> ... I'd like to suggest considering at least the latter to become >> an array instead of a pointer - there's little point wasting 8 >> bytes of storage for the pointer when the strings pointed to are >> all at most 9 bytes long (right now; I don't expect much longer >> ones to appear). > > I have tried this simple/dumb change on top of my patch: > > diff --git a/xen/common/sched/private.h b/xen/common/sched/private.h > index a870320146ef..ab2236874217 100644 > --- a/xen/common/sched/private.h > +++ b/xen/common/sched/private.h > @@ -273,7 +273,7 @@ static inline spinlock_t > *pcpu_schedule_trylock(unsigned int cpu) > > struct scheduler { > const char *name; /* full name for this scheduler */ > - const char *opt_name; /* option name for this scheduler */ > + const char opt_name[9]; /* option name for this scheduler */ > unsigned int sched_id; /* ID for this scheduler */ > void *sched_data; /* global data pointer */ > struct cpupool *cpupool;/* points to this scheduler's pool */ > > GCC will throw an error: > > core.c: In function ‘scheduler_init’: > core.c:2987:17: error: assignment of read-only variable ‘ops’ > ops = *schedulers[i]; > ^ > core.c:2997:21: error: assignment of read-only variable ‘ops’ > ops = *schedulers[i]; > ^ > > I don't particularly want to drop the const. So the code would probably > need some rework. What's wrong with not having the const when the field is an array? The more that all original (build-time, i.e. contain in the binary) instances of the struct are already const as a whole? Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |