Print this page
use NULL getmemid segop as a shorthand for ENODEV
Instead of forcing every segment driver to implement a dummy function to
return (hopefully) ENODEV, handle NULL getmemid segop function pointer as
"return ENODEV" shorthand.

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/vm/seg_kp.c
          +++ new/usr/src/uts/common/vm/seg_kp.c
↓ open down ↓ 85 lines elided ↑ open up ↑
  86   86  static void     segkp_delete(struct seg *seg, struct segkp_data *kpd);
  87   87  static caddr_t  segkp_get_internal(struct seg *seg, size_t len, uint_t flags,
  88   88                          struct segkp_data **tkpd, struct anon_map *amp);
  89   89  static void     segkp_release_internal(struct seg *seg,
  90   90                          struct segkp_data *kpd, size_t len);
  91   91  static int      segkp_unlock(struct hat *hat, struct seg *seg, caddr_t vaddr,
  92   92                          size_t len, struct segkp_data *kpd, uint_t flags);
  93   93  static int      segkp_load(struct hat *hat, struct seg *seg, caddr_t vaddr,
  94   94                          size_t len, struct segkp_data *kpd, uint_t flags);
  95   95  static struct   segkp_data *segkp_find(struct seg *seg, caddr_t vaddr);
  96      -static int      segkp_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp);
  97   96  
  98   97  /*
  99   98   * Lock used to protect the hash table(s) and caches.
 100   99   */
 101  100  static kmutex_t segkp_lock;
 102  101  
 103  102  /*
 104  103   * The segkp caches
 105  104   */
 106  105  static struct segkp_cache segkp_cache[SEGKP_MAX_CACHE];
↓ open down ↓ 31 lines elided ↑ open up ↑
 138  137  
 139  138  pgcnt_t anon_segkp_pages_locked;        /* See vm/anon.h */
 140  139  pgcnt_t anon_segkp_pages_resv;          /* anon reserved by seg_kp */
 141  140  
 142  141  static struct   seg_ops segkp_ops = {
 143  142          .fault          = segkp_fault,
 144  143          .checkprot      = segkp_checkprot,
 145  144          .kluster        = segkp_kluster,
 146  145          .dump           = segkp_dump,
 147  146          .pagelock       = segkp_pagelock,
 148      -        .getmemid       = segkp_getmemid,
 149  147  };
 150  148  
 151  149  
 152  150  static void segkpinit_mem_config(struct seg *);
 153  151  
 154  152  static uint32_t segkp_indel;
 155  153  
 156  154  /*
 157  155   * Allocate the segment specific private data struct and fill it in
 158  156   * with the per kp segment mutex, anon ptr. array and hash table.
↓ open down ↓ 1193 lines elided ↑ open up ↑
1352 1350                  }
1353 1351          }
1354 1352  }
1355 1353  
1356 1354  /*ARGSUSED*/
1357 1355  static int
1358 1356  segkp_pagelock(struct seg *seg, caddr_t addr, size_t len,
1359 1357      struct page ***ppp, enum lock_type type, enum seg_rw rw)
1360 1358  {
1361 1359          return (ENOTSUP);
1362      -}
1363      -
1364      -/*ARGSUSED*/
1365      -static int
1366      -segkp_getmemid(struct seg *seg, caddr_t addr, memid_t *memidp)
1367      -{
1368      -        return (ENODEV);
1369 1360  }
1370 1361  
1371 1362  #include <sys/mem_config.h>
1372 1363  
1373 1364  /*ARGSUSED*/
1374 1365  static void
1375 1366  segkp_mem_config_post_add(void *arg, pgcnt_t delta_pages)
1376 1367  {}
1377 1368  
1378 1369  /*
↓ open down ↓ 36 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX