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,443 **** #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) { --- 426,435 ----
*** 537,556 **** 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(); /* * 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(); return (0); } /* * This is a dummy segkmem function overloaded to call segkp --- 529,548 ---- 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) ! 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)); ! panic("segkmem badop"); return (0); } /* * This is a dummy segkmem function overloaded to call segkp
*** 561,580 **** 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(); /* * 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(); return (0); } static void segkmem_xdump_range(void *arg, void *start, size_t size) --- 553,572 ---- 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) ! 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)); ! panic("segkmem badop"); return (0); } static void segkmem_xdump_range(void *arg, void *start, size_t size)
*** 742,761 **** 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(); /* * 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(); return (0); } /*ARGSUSED*/ static lgrp_mem_policy_info_t * --- 734,753 ---- 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) ! 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)); ! panic("segkmem badop"); return (0); } /*ARGSUSED*/ static lgrp_mem_policy_info_t *
*** 772,800 **** 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, }; --- 764,779 ----