1 /*
   2  * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
   3  */
   4 
   5 #include <regex.h>
   6 #include <devfsadm.h>
   7 #include <stdio.h>
   8 #include <strings.h>
   9 #include <stdlib.h>
  10 #include <limits.h>
  11 #include <sys/mkdev.h>
  12 
  13 #include <sys/krrp.h>
  14 
  15 /* krrp name info */
  16 
  17 static int krrp(di_minor_t minor, di_node_t node);
  18 
  19 /*
  20  * devfs create callback register
  21  */
  22 static devfsadm_create_t krrp_create_cbt[] = {
  23         { "pseudo", "ddi_pseudo", KRRP_DRIVER,
  24             TYPE_EXACT | DRV_EXACT, ILEVEL_0, krrp,
  25         },
  26 };
  27 
  28 DEVFSADM_CREATE_INIT_V0(krrp_create_cbt);
  29 
  30 /*
  31  * The krrp control node looks like this:
  32  *      /dev/krrp -> /devices/pseudo/krrp@0:krrp
  33  */
  34 static int
  35 krrp(di_minor_t minor, di_node_t node)
  36 {
  37         char mn[MAXNAMELEN + 1];
  38 
  39         (void) strcpy(mn, di_minor_name(minor));
  40 
  41         if (strcmp(mn, KRRP_DRIVER) == 0)
  42                 (void) devfsadm_mklink(KRRP_DRIVER, node, minor, 0);
  43 
  44         return (DEVFSADM_CONTINUE);
  45 }