Print this page
6146 seg_inherit_notsup is redundant


  92         .fault          = SEGSPT_BADOP(int),
  93         .faulta         = SEGSPT_BADOP(faultcode_t),
  94         .setprot        = SEGSPT_BADOP(int),
  95         .checkprot      = SEGSPT_BADOP(int),
  96         .kluster        = SEGSPT_BADOP(int),
  97         .swapout        = SEGSPT_BADOP(size_t),
  98         .sync           = SEGSPT_BADOP(int),
  99         .incore         = SEGSPT_BADOP(size_t),
 100         .lockop         = SEGSPT_BADOP(int),
 101         .getprot        = SEGSPT_BADOP(int),
 102         .getoffset      = SEGSPT_BADOP(u_offset_t),
 103         .gettype        = SEGSPT_BADOP(int),
 104         .getvp          = SEGSPT_BADOP(int),
 105         .advise         = SEGSPT_BADOP(int),
 106         .dump           = SEGSPT_BADOP(void),
 107         .pagelock       = SEGSPT_BADOP(int),
 108         .setpagesize    = SEGSPT_BADOP(int),
 109         .getmemid       = SEGSPT_BADOP(int),
 110         .getpolicy      = segspt_getpolicy,
 111         .capable        = SEGSPT_BADOP(int),
 112         .inherit        = seg_inherit_notsup,
 113 };
 114 
 115 static int segspt_shmdup(struct seg *seg, struct seg *newseg);
 116 static int segspt_shmunmap(struct seg *seg, caddr_t raddr, size_t ssize);
 117 static void segspt_shmfree(struct seg *seg);
 118 static faultcode_t segspt_shmfault(struct hat *hat, struct seg *seg,
 119                 caddr_t addr, size_t len, enum fault_type type, enum seg_rw rw);
 120 static faultcode_t segspt_shmfaulta(struct seg *seg, caddr_t addr);
 121 static int segspt_shmsetprot(register struct seg *seg, register caddr_t addr,
 122                         register size_t len, register uint_t prot);
 123 static int segspt_shmcheckprot(struct seg *seg, caddr_t addr, size_t size,
 124                         uint_t prot);
 125 static int      segspt_shmkluster(struct seg *seg, caddr_t addr, ssize_t delta);
 126 static size_t   segspt_shmswapout(struct seg *seg);
 127 static size_t segspt_shmincore(struct seg *seg, caddr_t addr, size_t len,
 128                         register char *vec);
 129 static int segspt_shmsync(struct seg *seg, register caddr_t addr, size_t len,
 130                         int attr, uint_t flags);
 131 static int segspt_shmlockop(struct seg *seg, caddr_t addr, size_t len,
 132                         int attr, int op, ulong_t *lockmap, size_t pos);


 152         .fault          = segspt_shmfault,
 153         .faulta         = segspt_shmfaulta,
 154         .setprot        = segspt_shmsetprot,
 155         .checkprot      = segspt_shmcheckprot,
 156         .kluster        = segspt_shmkluster,
 157         .swapout        = segspt_shmswapout,
 158         .sync           = segspt_shmsync,
 159         .incore         = segspt_shmincore,
 160         .lockop         = segspt_shmlockop,
 161         .getprot        = segspt_shmgetprot,
 162         .getoffset      = segspt_shmgetoffset,
 163         .gettype        = segspt_shmgettype,
 164         .getvp          = segspt_shmgetvp,
 165         .advise         = segspt_shmadvise,
 166         .dump           = segspt_shmdump,
 167         .pagelock       = segspt_shmpagelock,
 168         .setpagesize    = segspt_shmsetpgsz,
 169         .getmemid       = segspt_shmgetmemid,
 170         .getpolicy      = segspt_shmgetpolicy,
 171         .capable        = segspt_shmcapable,
 172         .inherit        = seg_inherit_notsup,
 173 };
 174 
 175 static void segspt_purge(struct seg *seg);
 176 static int segspt_reclaim(void *, caddr_t, size_t, struct page **,
 177                 enum seg_rw, int);
 178 static int spt_anon_getpages(struct seg *seg, caddr_t addr, size_t len,
 179                 page_t **ppa);
 180 
 181 
 182 
 183 /*ARGSUSED*/
 184 int
 185 sptcreate(size_t size, struct seg **sptseg, struct anon_map *amp,
 186         uint_t prot, uint_t flags, uint_t share_szc)
 187 {
 188         int     err;
 189         struct  as      *newas;
 190         struct  segspt_crargs sptcargs;
 191 
 192 #ifdef DEBUG




  92         .fault          = SEGSPT_BADOP(int),
  93         .faulta         = SEGSPT_BADOP(faultcode_t),
  94         .setprot        = SEGSPT_BADOP(int),
  95         .checkprot      = SEGSPT_BADOP(int),
  96         .kluster        = SEGSPT_BADOP(int),
  97         .swapout        = SEGSPT_BADOP(size_t),
  98         .sync           = SEGSPT_BADOP(int),
  99         .incore         = SEGSPT_BADOP(size_t),
 100         .lockop         = SEGSPT_BADOP(int),
 101         .getprot        = SEGSPT_BADOP(int),
 102         .getoffset      = SEGSPT_BADOP(u_offset_t),
 103         .gettype        = SEGSPT_BADOP(int),
 104         .getvp          = SEGSPT_BADOP(int),
 105         .advise         = SEGSPT_BADOP(int),
 106         .dump           = SEGSPT_BADOP(void),
 107         .pagelock       = SEGSPT_BADOP(int),
 108         .setpagesize    = SEGSPT_BADOP(int),
 109         .getmemid       = SEGSPT_BADOP(int),
 110         .getpolicy      = segspt_getpolicy,
 111         .capable        = SEGSPT_BADOP(int),

 112 };
 113 
 114 static int segspt_shmdup(struct seg *seg, struct seg *newseg);
 115 static int segspt_shmunmap(struct seg *seg, caddr_t raddr, size_t ssize);
 116 static void segspt_shmfree(struct seg *seg);
 117 static faultcode_t segspt_shmfault(struct hat *hat, struct seg *seg,
 118                 caddr_t addr, size_t len, enum fault_type type, enum seg_rw rw);
 119 static faultcode_t segspt_shmfaulta(struct seg *seg, caddr_t addr);
 120 static int segspt_shmsetprot(register struct seg *seg, register caddr_t addr,
 121                         register size_t len, register uint_t prot);
 122 static int segspt_shmcheckprot(struct seg *seg, caddr_t addr, size_t size,
 123                         uint_t prot);
 124 static int      segspt_shmkluster(struct seg *seg, caddr_t addr, ssize_t delta);
 125 static size_t   segspt_shmswapout(struct seg *seg);
 126 static size_t segspt_shmincore(struct seg *seg, caddr_t addr, size_t len,
 127                         register char *vec);
 128 static int segspt_shmsync(struct seg *seg, register caddr_t addr, size_t len,
 129                         int attr, uint_t flags);
 130 static int segspt_shmlockop(struct seg *seg, caddr_t addr, size_t len,
 131                         int attr, int op, ulong_t *lockmap, size_t pos);


 151         .fault          = segspt_shmfault,
 152         .faulta         = segspt_shmfaulta,
 153         .setprot        = segspt_shmsetprot,
 154         .checkprot      = segspt_shmcheckprot,
 155         .kluster        = segspt_shmkluster,
 156         .swapout        = segspt_shmswapout,
 157         .sync           = segspt_shmsync,
 158         .incore         = segspt_shmincore,
 159         .lockop         = segspt_shmlockop,
 160         .getprot        = segspt_shmgetprot,
 161         .getoffset      = segspt_shmgetoffset,
 162         .gettype        = segspt_shmgettype,
 163         .getvp          = segspt_shmgetvp,
 164         .advise         = segspt_shmadvise,
 165         .dump           = segspt_shmdump,
 166         .pagelock       = segspt_shmpagelock,
 167         .setpagesize    = segspt_shmsetpgsz,
 168         .getmemid       = segspt_shmgetmemid,
 169         .getpolicy      = segspt_shmgetpolicy,
 170         .capable        = segspt_shmcapable,

 171 };
 172 
 173 static void segspt_purge(struct seg *seg);
 174 static int segspt_reclaim(void *, caddr_t, size_t, struct page **,
 175                 enum seg_rw, int);
 176 static int spt_anon_getpages(struct seg *seg, caddr_t addr, size_t len,
 177                 page_t **ppa);
 178 
 179 
 180 
 181 /*ARGSUSED*/
 182 int
 183 sptcreate(size_t size, struct seg **sptseg, struct anon_map *amp,
 184         uint_t prot, uint_t flags, uint_t share_szc)
 185 {
 186         int     err;
 187         struct  as      *newas;
 188         struct  segspt_crargs sptcargs;
 189 
 190 #ifdef DEBUG