]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/ukswrand: Adapt (u)random to new device_create
authorMarc Rittinghaus <marc.rittinghaus@unikraft.io>
Thu, 20 Apr 2023 15:06:37 +0000 (17:06 +0200)
committerUnikraft <monkey@unikraft.io>
Tue, 2 May 2023 20:36:20 +0000 (20:36 +0000)
The signature and requirements of device_create() changed.
This commit adapts the implementations of /dev/random and
/dev/urandom to use the new definition.

Signed-off-by: Marc Rittinghaus <marc.rittinghaus@unikraft.io>
Reviewed-by: Razvan Deaconescu <razvand@unikraft.io>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #855

lib/ukswrand/dev.c

index fbd447d1b22c1b2413062c184ce3463ecc68e902..5ab78d66c3d4b405a521434beb24c2dc025ad54e 100644 (file)
@@ -44,8 +44,8 @@
 #define DEV_RANDOM_NAME "random"
 #define DEV_URANDOM_NAME "urandom"
 
-int dev_random_read(struct device *dev __unused, struct uio *uio,
-                       int flags __unused)
+static int dev_random_read(struct device *dev __unused, struct uio *uio,
+                          int flags __unused)
 {
        size_t count;
        char *buf;
@@ -59,21 +59,19 @@ int dev_random_read(struct device *dev __unused, struct uio *uio,
        return 0;
 }
 
-int dev_random_open(struct device *device __unused, int mode __unused)
+static int dev_random_write(struct device *dev __unused,
+                           struct uio *uio __unused,
+                           int flags __unused)
 {
-       return 0;
-}
-
-
-int dev_random_close(struct device *device __unused)
-{
-       return 0;
+       return EPERM;
 }
 
 static struct devops random_devops = {
+       .open = dev_noop_open,
+       .close = dev_noop_close,
        .read = dev_random_read,
-       .open = dev_random_open,
-       .close = dev_random_close,
+       .write = dev_random_write,
+       .ioctl = dev_noop_ioctl,
 };
 
 static struct driver drv_random = {
@@ -90,25 +88,25 @@ static struct driver drv_urandom = {
 
 static int devfs_register(void)
 {
-       struct device *dev;
+       int rc;
 
        uk_pr_info("Register '%s' and '%s' to devfs\n",
                   DEV_URANDOM_NAME, DEV_RANDOM_NAME);
 
        /* register /dev/urandom */
-       dev = device_create(&drv_urandom, DEV_URANDOM_NAME, D_CHR);
-       if (dev == NULL) {
-               uk_pr_err("Failed to register '%s' to devfs\n",
-                         DEV_URANDOM_NAME);
-               return -1;
+       rc = device_create(&drv_urandom, DEV_URANDOM_NAME, D_CHR, NULL);
+       if (unlikely(rc)) {
+               uk_pr_err("Failed to register '%s' to devfs: %d\n",
+                         DEV_URANDOM_NAME, rc);
+               return -rc;
        }
 
        /* register /dev/random */
-       dev = device_create(&drv_random, DEV_RANDOM_NAME, D_CHR);
-       if (dev == NULL) {
-               uk_pr_err("Failed to register '%s' to devfs\n",
-                         DEV_RANDOM_NAME);
-               return -1;
+       rc = device_create(&drv_random, DEV_RANDOM_NAME, D_CHR, NULL);
+       if (unlikely(rc)) {
+               uk_pr_err("Failed to register '%s' to devfs: %d\n",
+                         DEV_RANDOM_NAME, rc);
+               return -rc;
        }
 
        return 0;