/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* bos72Q src/bos/kernel/sys/vmpattr.h 1.12.2.4 */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* Restricted Materials of IBM */ /* */ /* COPYRIGHT International Business Machines Corp. 2006,2019 */ /* All Rights Reserved */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* */ /* IBM_PROLOG_END_TAG */ /* @(#)23 1.12.2.4 src/bos/kernel/sys/vmpattr.h, sysvmm, bos72Q, q2019_13A4 2/6/19 00:41:07 */ #ifndef _H_VMPATTR #define _H_VMPATTR /* * COMPONENT_NAME: (SYSVMM) Virtual Memory Manager * * ORIGINS: 27 */ #include #include #ifdef __cplusplus extern "C" { #endif int vm_pattr(long /*cmd*/, pid_t /*pid*/, void * /*attr*/, size_t /*argsz*/); kerrno_t kvm_pattr(long, pid_t, void *, size_t); /* [k]vm_pattr returns */ #define EINVAL_VMPATTR_ARGSZ KERROR(EINVAL, sysvmm_BLOCK_05, 0x001) #define EINVAL_VMPATTR_MPSS_PSX KERROR(EINVAL, sysvmm_BLOCK_05, 0x002) #define ENOTSUP_VMPATTR_MPSS_PSX KERROR(ENOTSUP,sysvmm_BLOCK_05, 0x003) #define EINVAL_VMPATTR_ADDR_ALIGN KERROR(EINVAL, sysvmm_BLOCK_05, 0x004) #define ENOMEM_VMPATTR_HOLE KERROR(ENOMEM, sysvmm_BLOCK_05, 0x005) #define EINVAL_VMPATTR_INVAL_MEM KERROR(EINVAL, sysvmm_BLOCK_05, 0x006) #define EINVAL_VMPATTR_SEG_ALIGN1 KERROR(EINVAL, sysvmm_BLOCK_05, 0x007) #define ENOSYS_VMPATTR_PSPA KERROR(ENOSYS, sysvmm_BLOCK_05, 0x008) #define EINVAL_VMPATTR_PSPA KERROR(EINVAL, sysvmm_BLOCK_05, 0x009) #define EINVAL_VMPATTR_SEG_ALIGN2 KERROR(EINVAL, sysvmm_BLOCK_05, 0x00A) #define ENOTSUP_VMPATTR_PSPA1 KERROR(ENOTSUP,sysvmm_BLOCK_05, 0x00B) #define ENOTSUP_VMPATTR_PSPA2 KERROR(ENOTSUP,sysvmm_BLOCK_05, 0x00C) #define EINVAL_VMPATTR_PSX KERROR(EINVAL, sysvmm_BLOCK_05, 0x00D) #define EINVAL_VMPATTR_PSIZE_ALIGN KERROR(EINVAL, sysvmm_BLOCK_05, 0x00E) #define EINVAL_VMPATTR_CMD KERROR(EINVAL, sysvmm_BLOCK_05, 0x00F) #define ESRCH_VMPATTR_INVAL_PID0 KERROR(ESRCH, sysvmm_BLOCK_05, 0x010) #define ESRCH_VMPATTR_INVAL_PVPROC KERROR(ESRCH, sysvmm_BLOCK_05, 0x011) #define ESRCH_VMPATTR_PSTATE KERROR(ESRCH, sysvmm_BLOCK_05, 0x012) #define ENOTSUP_VMPATTR_XPROC_KPROC KERROR(ENOTSUP,sysvmm_BLOCK_05, 0x013) #define EPERM_VMPATTR_XPROC KERROR(EPERM, sysvmm_BLOCK_05, 0x014) #define ENOSYS_VMPATTR_PSIZE KERROR(ENOSYS, sysvmm_BLOCK_05, 0x015) #define EACCES_VMPATTR_RDONLY KERROR(EACCES, sysvmm_BLOCK_05, 0x016) #define EACCES_VMPATTR_MMAP KERROR(EACCES, sysvmm_BLOCK_05, 0x017) #define EINVAL_VMPATTR_MMAP KERROR(EINVAL, sysvmm_BLOCK_05, 0x018) #define ENOTSUP_VMPATTR_MMAP KERROR(ENOTSUP,sysvmm_BLOCK_05, 0x019) #define ESRCH_VMPATTR_XPROC_WPAR KERROR(ESRCH, sysvmm_BLOCK_05, 0x01A) #define EINVAL_VMPATTR_INVAL_MEM2 KERROR(EINVAL, sysvmm_BLOCK_05, 0x01B) #define EINVAL_VMPATTR_MMAP_MINPS KERROR(EINVAL, sysvmm_BLOCK_05, 0x01C) #define EINVAL_VMPATTR_MMAP_SSIZE KERROR(EINVAL, sysvmm_BLOCK_05, 0x01D) #define EINVAL_VMPATTR_BAD_MSID KERROR(EINVAL, sysvmm_BLOCK_05, 0x01E) #define EINVAL_VMPATTR_BAD_SSID KERROR(EINVAL, sysvmm_BLOCK_05, 0x01F) #define ENOMEM_VMPATTR_XPROC_REQUEST KERROR(EINVAL, sysvmm_BLOCK_05, 0x020) #define EINVAL_VMPATTR_XPROC_BADATA KERROR(EINVAL, sysvmm_BLOCK_05, 0x021) #define EINVAL_VMPATTR_XPROC_PVLOCK KERROR(EINVAL, sysvmm_BLOCK_05, 0x022) #define ENOMEM_VMPATTR_PSPA_MMAP KERROR(EINVAL, sysvmm_BLOCK_05, 0x023) #define EINVAL_VMPATTR_GET_MV_FLAGS KERROR(EINVAL, sysvmm_BLOCK_05, 0x024) #define EINVAL_VMPATTR_SET_MV_FLAGS KERROR(EINVAL, sysvmm_BLOCK_05, 0x025) #define EINVAL_VMPATTR_SET_MV_TYPE KERROR(EINVAL, sysvmm_BLOCK_05, 0x026) #define EINVAL_VMPATTR_SET_MV_AME KERROR(EINVAL, sysvmm_BLOCK_05, 0x027) #define ESRCH_VMPATTR_INVAL_PID1 KERROR(ESRCH, sysvmm_BLOCK_05, 0x028) #define ESRCH_VMPATTR_INVAL_PID2 KERROR(ESRCH, sysvmm_BLOCK_05, 0x029) #define EINVAL_VMPATTR_PSIZE_EXTENDED KERROR(EINVAL, sysvmm_BLOCK_05, 0x02A) #define EINVAL_VMPATTR_INVAL_MEM3 KERROR(EINVAL, sysvmm_BLOCK_05, 0x02B) #define ENOTSUP_VMPATTR_GET_PSEXT KERROR(ENOTSUP,sysvmm_BLOCK_05, 0x02C) struct vm_pa_range { ptr64_t rng_start; size64_t rng_size; }; /* values for 'cmd' argument and 'attr' argument */ #define VM_PA_SET_PSIZE 0x10L #define VM_PA_GET_PSIZE 0x20L struct vm_pa_psize { struct vm_pa_range pa_range; psize_t pa_psize; }; #define VM_PA_SET_PSIZE_EXTENDED 0x18L #define VM_PA_GET_PSIZE_EXTENDED 0x28L /* RESERVED 0x1CL */ /* RESERVED 0x2CL */ struct vm_pa_get_psize_soft { int64_t n64k_soft; int64_t n16m_soft; }; struct vm_pa_psize_extended { struct vm_pa_range pa_range; psize_t pa_psize; size64_t pa_info_size; /* The pa_info field is used as follows: * * VM_PA_SET_PSIZE_EXTENDED - optional rsethandle_t to rset specifying * memory srads to be used for the 16m mpss storage allocation. * VM_PA_GET_PSIZE_EXTENDED - pointer to vm_pa_get_psize_soft * structure to receive returned data. */ ptr64_t pa_info; }; #define VM_PA_GET_RMUSAGE 0x30L struct vm_pa_rmusage { struct vm_pa_range pa_range; size64_t pa_rbytes; }; #define VM_PA_SET_PSPA 0x40L #define VM_PA_GET_PSPA 0x50L struct vm_pa_pspa { struct vm_pa_range pa_range; int pa_pspa; }; #define VM_PA_GET_PSPA_ALIGN 0x60L struct vm_pa_pspa_align { struct vm_pa_range pa_range; size64_t pa_pspa_align; }; #define VM_PA_CHECK_PSIZE 0x70L struct vm_pa_psize_check { struct vm_pa_range pa_range; psize_t pa_psize; int pa_reason; }; #define VM_PA_GET_MEMVIEW 0x80L #define VM_PA_SET_MEMVIEW 0x90L struct vm_pa_memview { enum vm_pa_memview_type_e { VM_PA_MV_TRUE = 0x0, VM_PA_MV_EXPANDED = 0x1 } pa_mv_type; unsigned int pa_mv_flags; /* must be set to 0; none currently supported */ }; /* RESERVED 0x100L */ /* RESERVED 0x110L */ #define VM_PA_MPROTECT_SHM_ON 0x120L #define VM_PA_MPROTECT_TXT_ON 0x121L #define VM_PA_SET_LSA 0x130L /* uses struct vm_pa_range as it's argument */ #define VM_PA_SET_LSA_POLICY 0x131L struct vm_pa_lsa_policy { enum vm_pa_lsa_policy_type_e { VM_PA_SHM_1TB_SHARED = 0x0, VM_PA_SHM_1TB_UNSHARED = 0x1 } pa_lsa_cmd; size64_t pa_lsa_val; }; /* RESERVED 0x140L */ /* Reason codes for VM_PA_CHECK_PSIZE operations. */ #define VMPATTR_SET_PSIZE_VALID 0 #define VMPATTR_INVALID_MPSS_PSIZE 1 #define VMPATTR_NON_MPSS_SEGMENT 2 #define VMPATTR_NON_MPSS_PAGE 3 #define VMPATTR_RDONLY_MEM 4 #define VMPATTR_NON_MPSS_ALIGNED_MMAP 5 #define VMPATTR_MEMORY_TYPE_UNSUPPORTED 6 #define VMPATTR_PAGE_ATTRIBUTES 7 #define VMPATTR_NOT_FULLY_POPULATED 8 #define VMPATTR_PHYSICAL_ATTACHMENTS 9 #ifdef __cplusplus } #endif #endif /* _H_VMPATTR */