e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley/*
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * CDDL HEADER START
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley *
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * The contents of this file are subject to the terms of the
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * Common Development and Distribution License (the "License").
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * You may not use this file except in compliance with the License.
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley *
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * or http://www.opensolaris.org/os/licensing.
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * See the License for the specific language governing permissions
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * and limitations under the License.
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley *
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * When distributing Covered Code, include this CDDL HEADER in each
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * If applicable, add the following below this CDDL HEADER, with the
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * fields enclosed by brackets "[]" replaced with your own identifying
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * information: Portions Copyright [yyyy] [name of copyright owner]
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley *
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * CDDL HEADER END
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley */
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley/*
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * Use is subject to license terms.
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley */
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <regex.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <devfsadm.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <stdio.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <strings.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <stdlib.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <limits.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <sys/mkdev.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley#include <sys/fs/zut.h>
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley/* zfs unit test driver */
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haleystatic int zut(di_minor_t minor, di_node_t node);
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley/*
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * devfs create callback register
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley */
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haleystatic devfsadm_create_t zut_create_cbt[] = {
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley { "pseudo", "ddi_pseudo", ZUT_DRIVER,
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley TYPE_EXACT | DRV_EXACT, ILEVEL_0, zut,
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley },
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley};
e802abbda8c322f24d47835734f4a793ef15ddc8Tim HaleyDEVFSADM_CREATE_INIT_V0(zut_create_cbt);
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley/*
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * For the zut control node:
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley * /dev/zut -> /devices/pseudo/zut@0:zut
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley */
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haleystatic int
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haleyzut(di_minor_t minor, di_node_t node)
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley{
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley if (strcmp(di_minor_name(minor), ZUT_DRIVER) == 0)
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley (void) devfsadm_mklink(ZUT_DRIVER, node, minor, 0);
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley return (DEVFSADM_CONTINUE);
e802abbda8c322f24d47835734f4a793ef15ddc8Tim Haley}