#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;
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 = {
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;