mirror of
https://github.com/torvalds/linux.git
synced 2026-10-23 23:51:02 +02:00
tools: sync coredump.h header
Sync the headers for the selftests. Link: https://patch.msgid.link/20260821-work-coredump-filter-v1-2-91f9a73ef03e@kernel.org Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
This commit is contained in:
parent
757ebc30a3
commit
27a26a0b86
|
|
@ -16,6 +16,9 @@
|
|||
* requires COREDUMP_KERNEL
|
||||
* @COREDUMP_SPARSE: describe the holes in the coredump as zero records
|
||||
* instead of transferring them; requires COREDUMP_RECORDS
|
||||
* @COREDUMP_MEMORY_TYPES: dump the memory types in
|
||||
* coredump_ack->memory_types instead of the ones
|
||||
* the task selected; requires COREDUMP_KERNEL
|
||||
*/
|
||||
enum {
|
||||
COREDUMP_KERNEL = (1ULL << 0),
|
||||
|
|
@ -24,6 +27,37 @@ enum {
|
|||
COREDUMP_WAIT = (1ULL << 3),
|
||||
COREDUMP_RECORDS = (1ULL << 4),
|
||||
COREDUMP_SPARSE = (1ULL << 5),
|
||||
COREDUMP_MEMORY_TYPES = (1ULL << 6),
|
||||
};
|
||||
|
||||
/**
|
||||
* coredump memory types
|
||||
* @COREDUMP_MEMORY_ANON_PRIVATE: anonymous private memory
|
||||
* @COREDUMP_MEMORY_ANON_SHARED: anonymous shared memory
|
||||
* @COREDUMP_MEMORY_FILE_PRIVATE: file-backed private memory
|
||||
* @COREDUMP_MEMORY_FILE_SHARED: file-backed shared memory
|
||||
* @COREDUMP_MEMORY_ELF_HEADERS: the first page of a file-backed private
|
||||
* mapping that starts an ELF file
|
||||
* @COREDUMP_MEMORY_HUGETLB_PRIVATE: hugetlb private memory
|
||||
* @COREDUMP_MEMORY_HUGETLB_SHARED: hugetlb shared memory
|
||||
* @COREDUMP_MEMORY_DAX_PRIVATE: DAX private memory
|
||||
* @COREDUMP_MEMORY_DAX_SHARED: DAX shared memory
|
||||
*
|
||||
* A bitmask of memory types a coredump may request to be included. New
|
||||
* memory type bits must ensure that they do not steal memory from an
|
||||
* existing one so a coredump server will continue to get the same
|
||||
* coredumps even if a new bit is introduced.
|
||||
*/
|
||||
enum {
|
||||
COREDUMP_MEMORY_ANON_PRIVATE = (1ULL << 0),
|
||||
COREDUMP_MEMORY_ANON_SHARED = (1ULL << 1),
|
||||
COREDUMP_MEMORY_FILE_PRIVATE = (1ULL << 2),
|
||||
COREDUMP_MEMORY_FILE_SHARED = (1ULL << 3),
|
||||
COREDUMP_MEMORY_ELF_HEADERS = (1ULL << 4),
|
||||
COREDUMP_MEMORY_HUGETLB_PRIVATE = (1ULL << 5),
|
||||
COREDUMP_MEMORY_HUGETLB_SHARED = (1ULL << 6),
|
||||
COREDUMP_MEMORY_DAX_PRIVATE = (1ULL << 7),
|
||||
COREDUMP_MEMORY_DAX_SHARED = (1ULL << 8),
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -31,6 +65,8 @@ enum {
|
|||
* @size: size of struct coredump_req
|
||||
* @size_ack: known size of struct coredump_ack on this kernel
|
||||
* @mask: supported features
|
||||
* @memory_types: the memory types the task selected
|
||||
* @memory_types_mask: the memory types this kernel knows
|
||||
*
|
||||
* When a coredump happens the kernel will connect to the coredump
|
||||
* socket and send a coredump request to the coredump server. The @size
|
||||
|
|
@ -49,15 +85,27 @@ enum {
|
|||
* struct coredump_ack the kernel knows. Userspace may only send up to
|
||||
* coredump_req->size_ack bytes to the kernel and must set
|
||||
* coredump_ack->size accordingly.
|
||||
*
|
||||
* @memory_types is set to the default memory types that are included in
|
||||
* the coredump. This can be overridden by raising bits in
|
||||
* coredump_ack->memory_types.
|
||||
*
|
||||
* @memory_types_mask contains a bitmask of all memory types the kernel
|
||||
* knows about. A coredump server may only raise bits in
|
||||
* coredump_ack->memory_types that are raised in
|
||||
* coredump_req->memory_types_mask.
|
||||
*/
|
||||
struct coredump_req {
|
||||
__u32 size;
|
||||
__u32 size_ack;
|
||||
__u64 mask;
|
||||
__u64 memory_types;
|
||||
__u64 memory_types_mask;
|
||||
};
|
||||
|
||||
enum {
|
||||
COREDUMP_REQ_SIZE_VER0 = 16U, /* size of first published struct */
|
||||
COREDUMP_REQ_SIZE_VER1 = 32U, /* memory_types and memory_types_mask added */
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -65,6 +113,8 @@ enum {
|
|||
* @size: size of the struct
|
||||
* @spare: unused
|
||||
* @mask: features kernel is supposed to use
|
||||
* @memory_types: memory types to dump, only with COREDUMP_MEMORY_TYPES
|
||||
* in @mask
|
||||
*
|
||||
* The @size member must be set to the size of struct coredump_ack. It
|
||||
* may never exceed what the kernel returned in coredump_req->size_ack
|
||||
|
|
@ -74,15 +124,30 @@ enum {
|
|||
* The @mask member must be set to the features the coredump server
|
||||
* wants the kernel to use. Only bits the kernel returned in
|
||||
* coredump_req->mask may be set.
|
||||
*
|
||||
* If COREDUMP_MEMORY_TYPES is raised in @mask the kernel dumps the
|
||||
* memory types set in the @memory_types mask. Zero is valid and dumps
|
||||
* no memory apart from the mappings that are always dumped.
|
||||
*
|
||||
* Note that memory a task excluded via MADV_DONTDUMP is always left
|
||||
* out. A coredump server wanting to add or drop memory types instead of
|
||||
* outright replacing it should simply copy coredump_req->memory_types
|
||||
* and then mask off or raise types as needed.
|
||||
*
|
||||
* Note that @memory_types must be zero if COREDUMP_MEMORY_TYPES isn't
|
||||
* raised. COREDUMP_MEMORY_TYPES requires COREDUMP_KERNEL and an ack of
|
||||
* at least COREDUMP_ACK_SIZE_VER1 bytes.
|
||||
*/
|
||||
struct coredump_ack {
|
||||
__u32 size;
|
||||
__u32 spare;
|
||||
__u64 mask;
|
||||
__u64 memory_types;
|
||||
};
|
||||
|
||||
enum {
|
||||
COREDUMP_ACK_SIZE_VER0 = 16U, /* size of first published struct */
|
||||
COREDUMP_ACK_SIZE_VER1 = 24U, /* memory_types added */
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -90,11 +155,12 @@ enum {
|
|||
*
|
||||
* The kernel will place a single byte on the coredump socket. The
|
||||
* markers notify userspace whether the coredump ack succeeded or
|
||||
* failed.
|
||||
* failed. After any marker other than COREDUMP_MARK_REQACK the kernel
|
||||
* closes the connection and no coredump is generated.
|
||||
*
|
||||
* @COREDUMP_MARK_MINSIZE: the provided coredump_ack size was too small
|
||||
* @COREDUMP_MARK_MAXSIZE: the provided coredump_ack size was too big
|
||||
* @COREDUMP_MARK_UNSUPPORTED: the provided coredump_ack mask was invalid
|
||||
* @COREDUMP_MARK_UNSUPPORTED: the provided coredump_ack mask or memory types were invalid
|
||||
* @COREDUMP_MARK_CONFLICTING: the provided coredump_ack mask has conflicting options
|
||||
* @COREDUMP_MARK_REQACK: the coredump request and ack was successful
|
||||
* @__COREDUMP_MARK_MAX: the maximum coredump mark value
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user