Print this page
no need for bad-op segment op functions
The segment drivers have a number of bad-op functions that simply panic.
Keeping the function pointer NULL will accomplish the same thing in most
cases.  In other cases, keeping the function pointer NULL will result in
proper error code being returned.

@@ -426,18 +426,10 @@
 #endif
         boot_mapin((caddr_t)addr, size);
         return (addr);
 }
 
-static void
-segkmem_badop()
-{
-        panic("segkmem_badop");
-}
-
-#define SEGKMEM_BADOP(t)        (t(*)())segkmem_badop
-
 /*ARGSUSED*/
 static faultcode_t
 segkmem_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t size,
         enum fault_type type, enum seg_rw rw)
 {

@@ -537,20 +529,20 @@
 segkmem_checkprot(struct seg *seg, caddr_t addr, size_t size, uint_t prot)
 {
         ASSERT(RW_LOCK_HELD(&seg->s_as->a_lock));
 
         if (seg->s_as != &kas)
-                segkmem_badop();
+                panic("segkmem badop");
 
         /*
          * If it is one of segkp pages, call into segkp.
          */
         if (segkp_bitmap && seg == &kvseg &&
             BT_TEST(segkp_bitmap, btop((uintptr_t)(addr - seg->s_base))))
                 return (segop_checkprot(segkp, addr, size, prot));
 
-        segkmem_badop();
+        panic("segkmem badop");
         return (0);
 }
 
 /*
  * This is a dummy segkmem function overloaded to call segkp

@@ -561,20 +553,20 @@
 segkmem_kluster(struct seg *seg, caddr_t addr, ssize_t delta)
 {
         ASSERT(RW_LOCK_HELD(&seg->s_as->a_lock));
 
         if (seg->s_as != &kas)
-                segkmem_badop();
+                panic("segkmem badop");
 
         /*
          * If it is one of segkp pages, call into segkp.
          */
         if (segkp_bitmap && seg == &kvseg &&
             BT_TEST(segkp_bitmap, btop((uintptr_t)(addr - seg->s_base))))
                 return (segop_kluster(segkp, addr, delta));
 
-        segkmem_badop();
+        panic("segkmem badop");
         return (0);
 }
 
 static void
 segkmem_xdump_range(void *arg, void *start, size_t size)

@@ -742,20 +734,20 @@
 segkmem_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp)
 {
         ASSERT(RW_LOCK_HELD(&seg->s_as->a_lock));
 
         if (seg->s_as != &kas)
-                segkmem_badop();
+                panic("segkmem badop");
 
         /*
          * If it is one of segkp pages, call into segkp.
          */
         if (segkp_bitmap && seg == &kvseg &&
             BT_TEST(segkp_bitmap, btop((uintptr_t)(addr - seg->s_base))))
                 return (segop_getmemid(segkp, addr, memidp));
 
-        segkmem_badop();
+        panic("segkmem badop");
         return (0);
 }
 
 /*ARGSUSED*/
 static lgrp_mem_policy_info_t *

@@ -772,29 +764,16 @@
                 return (1);
         return (0);
 }
 
 static struct seg_ops segkmem_ops = {
-        .dup            = SEGKMEM_BADOP(int),
-        .unmap          = SEGKMEM_BADOP(int),
-        .free           = SEGKMEM_BADOP(void),
         .fault          = segkmem_fault,
-        .faulta         = SEGKMEM_BADOP(faultcode_t),
         .setprot        = segkmem_setprot,
         .checkprot      = segkmem_checkprot,
         .kluster        = segkmem_kluster,
-        .sync           = SEGKMEM_BADOP(int),
-        .incore         = SEGKMEM_BADOP(size_t),
-        .lockop         = SEGKMEM_BADOP(int),
-        .getprot        = SEGKMEM_BADOP(int),
-        .getoffset      = SEGKMEM_BADOP(u_offset_t),
-        .gettype        = SEGKMEM_BADOP(int),
-        .getvp          = SEGKMEM_BADOP(int),
-        .advise         = SEGKMEM_BADOP(int),
         .dump           = segkmem_dump,
         .pagelock       = segkmem_pagelock,
-        .setpagesize    = SEGKMEM_BADOP(int),
         .getmemid       = segkmem_getmemid,
         .getpolicy      = segkmem_getpolicy,
         .capable        = segkmem_capable,
         .inherit        = seg_inherit_notsup,
 };