Print this page
use NULL capable segop as a shorthand for no-capabilities
Instead of forcing every segment driver to implement a dummy "return 0"
function, handle NULL capable segop function pointer as "no copabilities
supported" shorthand.

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/vm/seg_spt.c
          +++ new/usr/src/uts/common/vm/seg_spt.c
↓ open down ↓ 104 lines elided ↑ open up ↑
 105  105  static int segspt_shmgettype(struct seg *seg, caddr_t addr);
 106  106  static int segspt_shmgetvp(struct seg *seg, caddr_t addr, struct vnode **vpp);
 107  107  static int segspt_shmadvise(struct seg *seg, caddr_t addr, size_t len,
 108  108                          uint_t behav);
 109  109  static void segspt_shmdump(struct seg *seg);
 110  110  static int segspt_shmpagelock(struct seg *, caddr_t, size_t,
 111  111                          struct page ***, enum lock_type, enum seg_rw);
 112  112  static int segspt_shmsetpgsz(struct seg *, caddr_t, size_t, uint_t);
 113  113  static int segspt_shmgetmemid(struct seg *, caddr_t, memid_t *);
 114  114  static lgrp_mem_policy_info_t *segspt_shmgetpolicy(struct seg *, caddr_t);
 115      -static int segspt_shmcapable(struct seg *, segcapability_t);
 116  115  
 117  116  struct seg_ops segspt_shmops = {
 118  117          .dup            = segspt_shmdup,
 119  118          .unmap          = segspt_shmunmap,
 120  119          .free           = segspt_shmfree,
 121  120          .fault          = segspt_shmfault,
 122  121          .faulta         = segspt_shmfaulta,
 123  122          .setprot        = segspt_shmsetprot,
 124  123          .checkprot      = segspt_shmcheckprot,
 125  124          .kluster        = segspt_shmkluster,
↓ open down ↓ 3 lines elided ↑ open up ↑
 129  128          .getprot        = segspt_shmgetprot,
 130  129          .getoffset      = segspt_shmgetoffset,
 131  130          .gettype        = segspt_shmgettype,
 132  131          .getvp          = segspt_shmgetvp,
 133  132          .advise         = segspt_shmadvise,
 134  133          .dump           = segspt_shmdump,
 135  134          .pagelock       = segspt_shmpagelock,
 136  135          .setpagesize    = segspt_shmsetpgsz,
 137  136          .getmemid       = segspt_shmgetmemid,
 138  137          .getpolicy      = segspt_shmgetpolicy,
 139      -        .capable        = segspt_shmcapable,
 140  138  };
 141  139  
 142  140  static void segspt_purge(struct seg *seg);
 143  141  static int segspt_reclaim(void *, caddr_t, size_t, struct page **,
 144  142                  enum seg_rw, int);
 145  143  static int spt_anon_getpages(struct seg *seg, caddr_t addr, size_t len,
 146  144                  page_t **ppa);
 147  145  
 148  146  
 149  147  
↓ open down ↓ 2889 lines elided ↑ open up ↑
3039 3037  
3040 3038          /*
3041 3039           * Get policy info
3042 3040           *
3043 3041           * Assume starting anon index of 0
3044 3042           */
3045 3043          anon_index = seg_page(seg, addr);
3046 3044          policy_info = lgrp_shm_policy_get(amp, anon_index, NULL, 0);
3047 3045  
3048 3046          return (policy_info);
3049      -}
3050      -
3051      -/*ARGSUSED*/
3052      -static int
3053      -segspt_shmcapable(struct seg *seg, segcapability_t capability)
3054      -{
3055      -        return (0);
3056 3047  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX