|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v2 5/6] lib/ukswrand: Clean-up: devfs nodes are independent of MWC algorithm
Hi Simon,
Please see inline.
On 9/6/19 3:03 PM, Simon Kuenzer wrote:
> This patch cleans up the devfs integration of ukswrand:
> - The config option is properly namespaced.
> - mwc_dev.c is actually independent of the random number generator MWC.
> We move this file to dev.c
> - Crash the system when registration failed within the constructor.
> This behavior can be changed as soon as we introduce Unikraft init
> functions that can return error codes.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> ---
> lib/ukswrand/Config.uk | 5 ++---
> lib/ukswrand/Makefile.uk | 6 ++----
> lib/ukswrand/{mwc_dev.c => dev.c} | 26 ++++++++++++++++++--------
> 3 files changed, 22 insertions(+), 15 deletions(-)
> rename lib/ukswrand/{mwc_dev.c => dev.c} (83%)
>
> diff --git a/lib/ukswrand/Config.uk b/lib/ukswrand/Config.uk
> index a1a84bc5..40d22c86 100644
> --- a/lib/ukswrand/Config.uk
> +++ b/lib/ukswrand/Config.uk
> @@ -18,9 +18,8 @@ config LIBUKSWRAND_INITIALSEED
> int "Initial random seed"
> default 23
>
> -config DEV_RANDOM
> - bool "/dev/random device"
> +config LIBUKSWRAND_DEVFS
> + bool "Register random and urandom to devfs"
> select LIBDEVFS
> default n
> -
> endif
> diff --git a/lib/ukswrand/Makefile.uk b/lib/ukswrand/Makefile.uk
> index 25247474..b19094e0 100644
> --- a/lib/ukswrand/Makefile.uk
> +++ b/lib/ukswrand/Makefile.uk
> @@ -3,7 +3,5 @@ $(eval $(call addlib_s,libukswrand,$(CONFIG_LIBUKSWRAND)))
> CINCLUDES-$(CONFIG_LIBUKSWRAND) += -I$(LIBUKSWRAND_BASE)/include
> CXXINCLUDES-$(CONFIG_LIBUKSWRAND) += -I$(LIBUKSWRAND_BASE)/include
>
> -LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_MWC) += $(LIBUKSWRAND_BASE)/mwc.c
> -ifdef CONFIG_DEV_RANDOM
> -LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_MWC) += $(LIBUKSWRAND_BASE)/mwc_dev.c
> -endif
> +LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_MWC) += $(LIBUKSWRAND_BASE)/mwc.c
> +LIBUKSWRAND_SRCS-$(CONFIG_LIBUKSWRAND_DEVFS) += $(LIBUKSWRAND_BASE)/dev.c
> diff --git a/lib/ukswrand/mwc_dev.c b/lib/ukswrand/dev.c
> similarity index 83%
> rename from lib/ukswrand/mwc_dev.c
> rename to lib/ukswrand/dev.c
> index 5a4cb100..c5ce5f87 100644
> --- a/lib/ukswrand/mwc_dev.c
> +++ b/lib/ukswrand/dev.c
> @@ -101,19 +101,29 @@ static struct driver drv_urandom = {
> .name = DEV_URANDOM_NAME
> };
>
> -__constructor_prio(102) static void _uk_dev_swrand_ctor(void)
> +/*
> + * NOTE: We register the device nodes as application constructor
> + * because at that point of time we can expect that a memory allocator
> + * is available.
> + */
> +/*
> + * TODO: Move this registration to an Unikraft init table as soon we have it
> + * available. Application constructors may require random and urandom already
> + * being available when they get called.
> + */
> +__constructor_prio(101) static void _uk_dev_swrand_ctor(void)
I don't understand why you change the priority here. Let's change it
properly in another patch when we'll introduce a file/list of priorities
(e.g. with macros like '#define CONSTRUCTOR_PRIO_SWRAND 102).
> {
> struct device *dev;
>
> - uk_pr_info("Add /dev/random and /dev/urandom\n");
> + uk_pr_info("Register random and urandom to devfs\n");
>
> - /* register /dev/urandom */
> + /* register urandom */
> dev = device_create(&drv_urandom, DEV_URANDOM_NAME, D_CHR);
> - if (dev == NULL)
Please keep the changes to a minimum, i.e. leave these `if (dev ==
NULL)` checks as they are. It does bother me that these changes are not
objectively better, but these checks are in no way better than before.
> - uk_pr_info("Failed to register /dev/urandom\n");
> + if (!dev)
> + UK_CRASH("Failed to register urandom to devfs\n");
>
> - /* register /dev/random */
> + /* register random */
> dev = device_create(&drv_random, DEV_RANDOM_NAME, D_CHR);
> - if (dev == NULL)
Please keep the changes to a minimum, i.e. leave these `if (dev ==
NULL)` checks as they are.
> - uk_pr_info("Failed to register /dev/random\n");
> + if (!dev)
> + UK_CRASH("Failed to register random to devfs\n");
> }
>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |