Module Name: src Committed By: christos Date: Thu Sep 24 14:32:15 UTC 2015
Modified Files: src/sys/sys: sysctl.h Log Message: Add KERN_PROC_PATHNAME and VM_PROC_MAP used by libproc. To generate a diff of this commit: cvs rdiff -u -r1.215 -r1.216 src/sys/sys/sysctl.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/sys/sysctl.h diff -u src/sys/sys/sysctl.h:1.215 src/sys/sys/sysctl.h:1.216 --- src/sys/sys/sysctl.h:1.215 Sun Jan 4 17:11:40 2015 +++ src/sys/sys/sysctl.h Thu Sep 24 10:32:15 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: sysctl.h,v 1.215 2015/01/04 22:11:40 pooka Exp $ */ +/* $NetBSD: sysctl.h,v 1.216 2015/09/24 14:32:15 christos Exp $ */ /* * Copyright (c) 1989, 1993 @@ -678,6 +678,7 @@ struct kinfo_lwp { #define KERN_PROC_NARGV 2 /* number of strings in above */ #define KERN_PROC_ENV 3 /* environ */ #define KERN_PROC_NENV 4 /* number of strings in above */ +#define KERN_PROC_PATHNAME 5 /* path to executable */ /* * KERN_SYSVIPC subtypes @@ -828,6 +829,67 @@ struct evcnt_sysctl { #define KERN_EVCNT_COUNT_NONZERO 1 /* + * CTL_VM identifiers + */ +#define VM_PROC 1 /* internal */ +#define VM_PROC_MAP 1 /* struct kinfo_vmentry */ + +/* + * The vm.proc.map sysctl allows a process to dump the VM layout of + * another process as a series of entries. + */ +#define KVME_TYPE_NONE 0 +#define KVME_TYPE_OBJECT 1 +#define KVME_TYPE_VNODE 2 +#define KVME_TYPE_KERN 3 +#define KVME_TYPE_DEVICE 4 +#define KVME_TYPE_ANON 5 +#define KVME_TYPE_SUBMAP 6 +#define KVME_TYPE_UNKNOWN 255 + +#define KVME_PROT_READ 0x00000001 +#define KVME_PROT_WRITE 0x00000002 +#define KVME_PROT_EXEC 0x00000004 + +#define KVME_FLAG_COW 0x00000001 +#define KVME_FLAG_NEEDS_COPY 0x00000002 +#define KVME_FLAG_NOCOREDUMP 0x00000004 +#define KVME_FLAG_PAGEABLE 0x00000008 +#define KVME_FLAG_GROWS_UP 0x00000010 +#define KVME_FLAG_GROWS_DOWN 0x00000020 + +struct kinfo_vmentry { + uint64_t kve_start; /* Starting address. */ + uint64_t kve_end; /* Finishing address. */ + uint64_t kve_offset; /* Mapping offset in object */ + + uint32_t kve_type; /* Type of map entry. */ + uint32_t kve_flags; /* Flags on map entry. */ + + uint32_t kve_count; /* Number of pages/entries */ + uint32_t kve_wired_count; /* Number of wired pages */ + + uint32_t kve_advice; /* Advice */ + uint32_t kve_attributes; /* Map attribute */ + + uint32_t kve_protection; /* Protection bitmask. */ + uint32_t kve_max_protection; /* Max protection bitmask */ + + uint32_t kve_ref_count; /* VM obj ref count. */ + uint32_t kve_inheritance; /* Inheritance */ + + uint64_t kve_vn_fileid; /* inode number if vnode */ + uint64_t kve_vn_size; /* File size. */ + uint64_t kve_vn_fsid; /* dev_t of vnode location */ + uint64_t kve_vn_rdev; /* Device id if device. */ + + uint32_t kve_vn_type; /* Vnode type. */ + uint32_t kve_vn_mode; /* File mode. */ + + char kve_path[PATH_MAX]; /* Path to VM obj, if any. */ +}; + +/* * CTL_HW identifiers */ #define HW_MACHINE 1 /* string: machine class */