Print this page
6144 use C99 initializers in segment ops structures


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




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