]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/devfs: Adapt null/zero to new device_create
authorMarc Rittinghaus <marc.rittinghaus@unikraft.io>
Thu, 20 Apr 2023 15:03:57 +0000 (17:03 +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/null and
/dev/zero 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/devfs/null.c

index deb785f83e96a7975c7fb9a20a67752be7fd3cd8..51983164e66845a70df2c134e2b39d8189719257 100644 (file)
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <uk/config.h>
 #include <stdlib.h>
 #include <string.h>
+
+#include <uk/config.h>
 #include <uk/ctors.h>
 #include <uk/print.h>
 #include <vfscore/uio.h>
 #include <devfs/device.h>
 
-
-int dev_null_write(struct device *dev __unused, struct uio *uio,
-                  int flags __unused)
+static int dev_null_write(struct device *dev __unused, struct uio *uio,
+                         int flags __unused)
 {
        uio->uio_resid = 0;
        return 0;
 }
 
-int dev_null_open(struct device *device __unused, int mode __unused)
-{
-       return 0;
-}
-
-
-int dev_null_close(struct device *device __unused)
-{
-       return 0;
-}
-
 #ifdef CONFIG_LIBDEVFS_DEV_NULL
-
 #define DEV_NULL_NAME "null"
 
-int dev_null_read(struct device *dev __unused, struct uio *uio,
-                 int flags __unused)
+static int dev_null_read(struct device *dev __unused, struct uio *uio,
+                        int flags __unused)
 {
        uio->uio_resid = uio->uio_iov->iov_len;
        return 0;
 }
 
 static struct devops null_devops = {
+       .open = dev_noop_open,
+       .close = dev_noop_close,
        .read = dev_null_read,
        .write = dev_null_write,
-       .open = dev_null_open,
-       .close = dev_null_close,
+       .ioctl = dev_noop_ioctl,
 };
 
 static struct driver drv_null = {
@@ -80,14 +69,13 @@ static struct driver drv_null = {
        .devsz = 0,
        .name = DEV_NULL_NAME
 };
-#endif
+#endif /* CONFIG_LIBDEVFS_DEV_NULL */
 
 #ifdef CONFIG_LIBDEVFS_DEV_ZERO
-
 #define DEV_ZERO_NAME "zero"
 
-int dev_zero_read(struct device *dev __unused, struct uio *uio,
-                 int flags __unused)
+static int dev_zero_read(struct device *dev __unused, struct uio *uio,
+                        int flags __unused)
 {
        size_t count;
        char *buf;
@@ -101,10 +89,11 @@ int dev_zero_read(struct device *dev __unused, struct uio *uio,
 }
 
 static struct devops zero_devops = {
+       .open = dev_noop_open,
+       .close = dev_noop_close,
        .read = dev_zero_read,
        .write = dev_null_write,
-       .open = dev_null_open,
-       .close = dev_null_close,
+       .ioctl = dev_noop_ioctl,
 };
 
 static struct driver drv_zero = {
@@ -112,33 +101,35 @@ static struct driver drv_zero = {
        .devsz = 0,
        .name = DEV_ZERO_NAME
 };
-#endif
+#endif /* CONFIG_LIBDEVFS_DEV_ZERO */
 
 static int devfs_register_null(void)
 {
-       struct device *dev;
+       int rc;
 
 #ifdef CONFIG_LIBDEVFS_DEV_NULL
        uk_pr_debug("Register '%s' to devfs\n", DEV_NULL_NAME);
 
        /* register /dev/null */
-       dev = device_create(&drv_null, DEV_NULL_NAME, D_CHR);
-       if (dev == NULL) {
-               uk_pr_err("Failed to register '%s' to devfs\n", DEV_NULL_NAME);
-               return -1;
+       rc = device_create(&drv_null, DEV_NULL_NAME, D_CHR, NULL);
+       if (unlikely(rc)) {
+               uk_pr_err("Failed to register '%s' to devfs: %d\n",
+                         DEV_NULL_NAME, rc);
+               return -rc;
        }
-#endif
+#endif /* CONFIG_LIBDEVFS_DEV_NULL */
 
 #ifdef CONFIG_LIBDEVFS_DEV_ZERO
        uk_pr_debug("Register '%s' to devfs\n", DEV_ZERO_NAME);
 
        /* register /dev/zero */
-       dev = device_create(&drv_zero, DEV_ZERO_NAME, D_CHR);
-       if (dev == NULL) {
-               uk_pr_err("Failed to register '%s' to devfs\n", DEV_ZERO_NAME);
-               return -1;
+       rc = device_create(&drv_zero, DEV_ZERO_NAME, D_CHR, NULL);
+       if (unlikely(rc)) {
+               uk_pr_err("Failed to register '%s' to devfs: %d\n",
+                         DEV_ZERO_NAME, rc);
+               return -rc;
        }
-#endif
+#endif /* CONFIG_LIBDEVFS_DEV_ZERO */
 
        return 0;
 }