Print this page
use C99 initializers in segment ops structures


 120 static int      segvn_getprot(struct seg *seg, caddr_t addr, size_t len,
 121                     uint_t *protv);
 122 static u_offset_t       segvn_getoffset(struct seg *seg, caddr_t addr);
 123 static int      segvn_gettype(struct seg *seg, caddr_t addr);
 124 static int      segvn_getvp(struct seg *seg, caddr_t addr,
 125                     struct vnode **vpp);
 126 static int      segvn_advise(struct seg *seg, caddr_t addr, size_t len,
 127                     uint_t behav);
 128 static void     segvn_dump(struct seg *seg);
 129 static int      segvn_pagelock(struct seg *seg, caddr_t addr, size_t len,
 130                     struct page ***ppp, enum lock_type type, enum seg_rw rw);
 131 static int      segvn_setpagesize(struct seg *seg, caddr_t addr, size_t len,
 132                     uint_t szc);
 133 static int      segvn_getmemid(struct seg *seg, caddr_t addr,
 134                     memid_t *memidp);
 135 static lgrp_mem_policy_info_t   *segvn_getpolicy(struct seg *, caddr_t);
 136 static int      segvn_capable(struct seg *seg, segcapability_t capable);
 137 static int      segvn_inherit(struct seg *, caddr_t, size_t, uint_t);
 138 
 139 struct  seg_ops segvn_ops = {
 140         segvn_dup,
 141         segvn_unmap,
 142         segvn_free,
 143         segvn_fault,
 144         segvn_faulta,
 145         segvn_setprot,
 146         segvn_checkprot,
 147         segvn_kluster,
 148         segvn_sync,
 149         segvn_incore,
 150         segvn_lockop,
 151         segvn_getprot,
 152         segvn_getoffset,
 153         segvn_gettype,
 154         segvn_getvp,
 155         segvn_advise,
 156         segvn_dump,
 157         segvn_pagelock,
 158         segvn_setpagesize,
 159         segvn_getmemid,
 160         segvn_getpolicy,
 161         segvn_capable,
 162         segvn_inherit
 163 };
 164 
 165 /*
 166  * Common zfod structures, provided as a shorthand for others to use.
 167  */
 168 static segvn_crargs_t zfod_segvn_crargs =
 169         SEGVN_ZFOD_ARGS(PROT_ZFOD, PROT_ALL);
 170 static segvn_crargs_t kzfod_segvn_crargs =
 171         SEGVN_ZFOD_ARGS(PROT_ZFOD & ~PROT_USER,
 172         PROT_ALL & ~PROT_USER);
 173 static segvn_crargs_t stack_noexec_crargs =
 174         SEGVN_ZFOD_ARGS(PROT_ZFOD & ~PROT_EXEC, PROT_ALL);
 175 
 176 caddr_t zfod_argsp = (caddr_t)&zfod_segvn_crargs;   /* user zfod argsp */
 177 caddr_t kzfod_argsp = (caddr_t)&kzfod_segvn_crargs; /* kernel zfod argsp */
 178 caddr_t stack_exec_argsp = (caddr_t)&zfod_segvn_crargs;     /* executable stack */
 179 caddr_t stack_noexec_argsp = (caddr_t)&stack_noexec_crargs; /* noexec stack */
 180 
 181 #define vpgtob(n)       ((n) * sizeof (struct vpage))   /* For brevity */
 182 




 120 static int      segvn_getprot(struct seg *seg, caddr_t addr, size_t len,
 121                     uint_t *protv);
 122 static u_offset_t       segvn_getoffset(struct seg *seg, caddr_t addr);
 123 static int      segvn_gettype(struct seg *seg, caddr_t addr);
 124 static int      segvn_getvp(struct seg *seg, caddr_t addr,
 125                     struct vnode **vpp);
 126 static int      segvn_advise(struct seg *seg, caddr_t addr, size_t len,
 127                     uint_t behav);
 128 static void     segvn_dump(struct seg *seg);
 129 static int      segvn_pagelock(struct seg *seg, caddr_t addr, size_t len,
 130                     struct page ***ppp, enum lock_type type, enum seg_rw rw);
 131 static int      segvn_setpagesize(struct seg *seg, caddr_t addr, size_t len,
 132                     uint_t szc);
 133 static int      segvn_getmemid(struct seg *seg, caddr_t addr,
 134                     memid_t *memidp);
 135 static lgrp_mem_policy_info_t   *segvn_getpolicy(struct seg *, caddr_t);
 136 static int      segvn_capable(struct seg *seg, segcapability_t capable);
 137 static int      segvn_inherit(struct seg *, caddr_t, size_t, uint_t);
 138 
 139 struct  seg_ops segvn_ops = {
 140         .dup            = segvn_dup,
 141         .unmap          = segvn_unmap,
 142         .free           = segvn_free,
 143         .fault          = segvn_fault,
 144         .faulta         = segvn_faulta,
 145         .setprot        = segvn_setprot,
 146         .checkprot      = segvn_checkprot,
 147         .kluster        = segvn_kluster,
 148         .sync           = segvn_sync,
 149         .incore         = segvn_incore,
 150         .lockop         = segvn_lockop,
 151         .getprot        = segvn_getprot,
 152         .getoffset      = segvn_getoffset,
 153         .gettype        = segvn_gettype,
 154         .getvp          = segvn_getvp,
 155         .advise         = segvn_advise,
 156         .dump           = segvn_dump,
 157         .pagelock       = segvn_pagelock,
 158         .setpagesize    = segvn_setpagesize,
 159         .getmemid       = segvn_getmemid,
 160         .getpolicy      = segvn_getpolicy,
 161         .capable        = segvn_capable,
 162         .inherit        = segvn_inherit,
 163 };
 164 
 165 /*
 166  * Common zfod structures, provided as a shorthand for others to use.
 167  */
 168 static segvn_crargs_t zfod_segvn_crargs =
 169         SEGVN_ZFOD_ARGS(PROT_ZFOD, PROT_ALL);
 170 static segvn_crargs_t kzfod_segvn_crargs =
 171         SEGVN_ZFOD_ARGS(PROT_ZFOD & ~PROT_USER,
 172         PROT_ALL & ~PROT_USER);
 173 static segvn_crargs_t stack_noexec_crargs =
 174         SEGVN_ZFOD_ARGS(PROT_ZFOD & ~PROT_EXEC, PROT_ALL);
 175 
 176 caddr_t zfod_argsp = (caddr_t)&zfod_segvn_crargs;   /* user zfod argsp */
 177 caddr_t kzfod_argsp = (caddr_t)&kzfod_segvn_crargs; /* kernel zfod argsp */
 178 caddr_t stack_exec_argsp = (caddr_t)&zfod_segvn_crargs;     /* executable stack */
 179 caddr_t stack_noexec_argsp = (caddr_t)&stack_noexec_crargs; /* noexec stack */
 180 
 181 #define vpgtob(n)       ((n) * sizeof (struct vpage))   /* For brevity */
 182