Example #1
0
/*
 * This function is called by the hv_kvp_init -
 * creates character device hv_kvp_dev 
 * allocates memory to hv_kvp_dev_buf
 *
 */
static int
hv_kvp_dev_init(void)
{
	int error = 0;

	/* initialize semaphore */
	sema_init(&kvp_globals.dev_sema, 0, "hv_kvp device semaphore");
	/* create character device */
	error = make_dev_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK,
			&hv_kvp_dev,
			&hv_kvp_cdevsw,
			0,
			UID_ROOT,
			GID_WHEEL,
			0640,
			"hv_kvp_dev");
					   
	if (error != 0)
		return (error);

	/*
	 * Malloc with M_WAITOK flag will never fail.
	 */
	hv_kvp_dev_buf = malloc(sizeof(*hv_kvp_dev_buf), M_HV_KVP_DEV_BUF, M_WAITOK |
				M_ZERO);

	return (0);
}
Example #2
0
/*
 * The only reason this exists is to create the /dev/reroot/ directory,
 * used by reroot code in init(8) as a mountpoint for tmpfs.
 */
static void
reroot_conf(void *unused)
{
	int error;
	struct cdev *cdev;

	error = make_dev_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK, &cdev,
	    &reroot_cdevsw, NULL, UID_ROOT, GID_WHEEL, 0600, "reroot/reroot");
	if (error != 0) {
		printf("%s: failed to create device node, error %d",
		    __func__, error);
	}
}