Print this page
6144 use C99 initializers in segment ops structures


  94  *
  95  */
  96 int kpm_enable = 1;
  97 int kpm_smallpages = 0;
  98 int segmap_kpm = 1;
  99 
 100 /*
 101  * Private seg op routines.
 102  */
 103 faultcode_t segkpm_fault(struct hat *hat, struct seg *seg, caddr_t addr,
 104                         size_t len, enum fault_type type, enum seg_rw rw);
 105 static void     segkpm_dump(struct seg *);
 106 static void     segkpm_badop(void);
 107 static int      segkpm_notsup(void);
 108 static int      segkpm_capable(struct seg *, segcapability_t);
 109 
 110 #define SEGKPM_BADOP(t) (t(*)())segkpm_badop
 111 #define SEGKPM_NOTSUP   (int(*)())segkpm_notsup
 112 
 113 static struct seg_ops segkpm_ops = {
 114         SEGKPM_BADOP(int),      /* dup */
 115         SEGKPM_BADOP(int),      /* unmap */
 116         SEGKPM_BADOP(void),     /* free */
 117         segkpm_fault,
 118         SEGKPM_BADOP(int),      /* faulta */
 119         SEGKPM_BADOP(int),      /* setprot */
 120         SEGKPM_BADOP(int),      /* checkprot */
 121         SEGKPM_BADOP(int),      /* kluster */
 122         SEGKPM_BADOP(size_t),   /* swapout */
 123         SEGKPM_BADOP(int),      /* sync */
 124         SEGKPM_BADOP(size_t),   /* incore */
 125         SEGKPM_BADOP(int),      /* lockop */
 126         SEGKPM_BADOP(int),      /* getprot */
 127         SEGKPM_BADOP(u_offset_t), /* getoffset */
 128         SEGKPM_BADOP(int),      /* gettype */
 129         SEGKPM_BADOP(int),      /* getvp */
 130         SEGKPM_BADOP(int),      /* advise */
 131         segkpm_dump,            /* dump */
 132         SEGKPM_NOTSUP,          /* pagelock */
 133         SEGKPM_BADOP(int),      /* setpgsz */
 134         SEGKPM_BADOP(int),      /* getmemid */
 135         SEGKPM_BADOP(lgrp_mem_policy_info_t *), /* getpolicy */
 136         segkpm_capable,         /* capable */
 137         seg_inherit_notsup      /* inherit */
 138 };
 139 
 140 /*
 141  * kpm_pgsz and kpm_pgshft are set by platform layer.
 142  */
 143 size_t          kpm_pgsz;       /* kpm page size */
 144 uint_t          kpm_pgshft;     /* kpm page shift */
 145 u_offset_t      kpm_pgoff;      /* kpm page offset mask */
 146 uint_t          kpmp2pshft;     /* kpm page to page shift */
 147 pgcnt_t         kpmpnpgs;       /* how many pages per kpm page */
 148 
 149 
 150 #ifdef  SEGKPM_SUPPORT
 151 
 152 int
 153 segkpm_create(struct seg *seg, void *argsp)
 154 {
 155         struct segkpm_data *skd;
 156         struct segkpm_crargs *b = (struct segkpm_crargs *)argsp;
 157         ushort_t *p;




  94  *
  95  */
  96 int kpm_enable = 1;
  97 int kpm_smallpages = 0;
  98 int segmap_kpm = 1;
  99 
 100 /*
 101  * Private seg op routines.
 102  */
 103 faultcode_t segkpm_fault(struct hat *hat, struct seg *seg, caddr_t addr,
 104                         size_t len, enum fault_type type, enum seg_rw rw);
 105 static void     segkpm_dump(struct seg *);
 106 static void     segkpm_badop(void);
 107 static int      segkpm_notsup(void);
 108 static int      segkpm_capable(struct seg *, segcapability_t);
 109 
 110 #define SEGKPM_BADOP(t) (t(*)())segkpm_badop
 111 #define SEGKPM_NOTSUP   (int(*)())segkpm_notsup
 112 
 113 static struct seg_ops segkpm_ops = {
 114         .dup            = SEGKPM_BADOP(int),
 115         .unmap          = SEGKPM_BADOP(int),
 116         .free           = SEGKPM_BADOP(void),
 117         .fault          = segkpm_fault,
 118         .faulta         = SEGKPM_BADOP(int),
 119         .setprot        = SEGKPM_BADOP(int),
 120         .checkprot      = SEGKPM_BADOP(int),
 121         .kluster        = SEGKPM_BADOP(int),
 122         .swapout        = SEGKPM_BADOP(size_t),
 123         .sync           = SEGKPM_BADOP(int),
 124         .incore         = SEGKPM_BADOP(size_t),
 125         .lockop         = SEGKPM_BADOP(int),
 126         .getprot        = SEGKPM_BADOP(int),
 127         .getoffset      = SEGKPM_BADOP(u_offset_t),
 128         .gettype        = SEGKPM_BADOP(int),
 129         .getvp          = SEGKPM_BADOP(int),
 130         .advise         = SEGKPM_BADOP(int),
 131         .dump           = segkpm_dump,
 132         .pagelock       = SEGKPM_NOTSUP,
 133         .setpagesize    = SEGKPM_BADOP(int),
 134         .getmemid       = SEGKPM_BADOP(int),
 135         .getpolicy      = SEGKPM_BADOP(lgrp_mem_policy_info_t *),
 136         .capable        = segkpm_capable,
 137         .inherit        = seg_inherit_notsup,
 138 };
 139 
 140 /*
 141  * kpm_pgsz and kpm_pgshft are set by platform layer.
 142  */
 143 size_t          kpm_pgsz;       /* kpm page size */
 144 uint_t          kpm_pgshft;     /* kpm page shift */
 145 u_offset_t      kpm_pgoff;      /* kpm page offset mask */
 146 uint_t          kpmp2pshft;     /* kpm page to page shift */
 147 pgcnt_t         kpmpnpgs;       /* how many pages per kpm page */
 148 
 149 
 150 #ifdef  SEGKPM_SUPPORT
 151 
 152 int
 153 segkpm_create(struct seg *seg, void *argsp)
 154 {
 155         struct segkpm_data *skd;
 156         struct segkpm_crargs *b = (struct segkpm_crargs *)argsp;
 157         ushort_t *p;