[ramdisk] add cvitek pre-built ramdisk
Change-Id: Ic7d2046a23358129eaf621b5558984a64fa7361d
This commit is contained in:
117
ramdisk/initramfs/glibc_riscv64/usr/include/linux/acct.h
Normal file
117
ramdisk/initramfs/glibc_riscv64/usr/include/linux/acct.h
Normal file
@ -0,0 +1,117 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* BSD Process Accounting for Linux - Definitions
|
||||
*
|
||||
* Author: Marco van Wieringen (mvw@planets.elm.net)
|
||||
*
|
||||
* This header file contains the definitions needed to implement
|
||||
* BSD-style process accounting. The kernel accounting code and all
|
||||
* user-level programs that try to do something useful with the
|
||||
* process accounting log must include this file.
|
||||
*
|
||||
* Copyright (C) 1995 - 1997 Marco van Wieringen - ELM Consultancy B.V.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_ACCT_H
|
||||
#define _LINUX_ACCT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <asm/param.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/*
|
||||
* comp_t is a 16-bit "floating" point number with a 3-bit base 8
|
||||
* exponent and a 13-bit fraction.
|
||||
* comp2_t is 24-bit with 5-bit base 2 exponent and 20 bit fraction
|
||||
* (leading 1 not stored).
|
||||
* See linux/kernel/acct.c for the specific encoding systems used.
|
||||
*/
|
||||
|
||||
typedef __u16 comp_t;
|
||||
typedef __u32 comp2_t;
|
||||
|
||||
/*
|
||||
* accounting file record
|
||||
*
|
||||
* This structure contains all of the information written out to the
|
||||
* process accounting file whenever a process exits.
|
||||
*/
|
||||
|
||||
#define ACCT_COMM 16
|
||||
|
||||
struct acct
|
||||
{
|
||||
char ac_flag; /* Flags */
|
||||
char ac_version; /* Always set to ACCT_VERSION */
|
||||
/* for binary compatibility back until 2.0 */
|
||||
__u16 ac_uid16; /* LSB of Real User ID */
|
||||
__u16 ac_gid16; /* LSB of Real Group ID */
|
||||
__u16 ac_tty; /* Control Terminal */
|
||||
__u32 ac_btime; /* Process Creation Time */
|
||||
comp_t ac_utime; /* User Time */
|
||||
comp_t ac_stime; /* System Time */
|
||||
comp_t ac_etime; /* Elapsed Time */
|
||||
comp_t ac_mem; /* Average Memory Usage */
|
||||
comp_t ac_io; /* Chars Transferred */
|
||||
comp_t ac_rw; /* Blocks Read or Written */
|
||||
comp_t ac_minflt; /* Minor Pagefaults */
|
||||
comp_t ac_majflt; /* Major Pagefaults */
|
||||
comp_t ac_swaps; /* Number of Swaps */
|
||||
/* m68k had no padding here. */
|
||||
__u16 ac_ahz; /* AHZ */
|
||||
__u32 ac_exitcode; /* Exitcode */
|
||||
char ac_comm[ACCT_COMM + 1]; /* Command Name */
|
||||
__u8 ac_etime_hi; /* Elapsed Time MSB */
|
||||
__u16 ac_etime_lo; /* Elapsed Time LSB */
|
||||
__u32 ac_uid; /* Real User ID */
|
||||
__u32 ac_gid; /* Real Group ID */
|
||||
};
|
||||
|
||||
struct acct_v3
|
||||
{
|
||||
char ac_flag; /* Flags */
|
||||
char ac_version; /* Always set to ACCT_VERSION */
|
||||
__u16 ac_tty; /* Control Terminal */
|
||||
__u32 ac_exitcode; /* Exitcode */
|
||||
__u32 ac_uid; /* Real User ID */
|
||||
__u32 ac_gid; /* Real Group ID */
|
||||
__u32 ac_pid; /* Process ID */
|
||||
__u32 ac_ppid; /* Parent Process ID */
|
||||
__u32 ac_btime; /* Process Creation Time */
|
||||
float ac_etime; /* Elapsed Time */
|
||||
comp_t ac_utime; /* User Time */
|
||||
comp_t ac_stime; /* System Time */
|
||||
comp_t ac_mem; /* Average Memory Usage */
|
||||
comp_t ac_io; /* Chars Transferred */
|
||||
comp_t ac_rw; /* Blocks Read or Written */
|
||||
comp_t ac_minflt; /* Minor Pagefaults */
|
||||
comp_t ac_majflt; /* Major Pagefaults */
|
||||
comp_t ac_swaps; /* Number of Swaps */
|
||||
char ac_comm[ACCT_COMM]; /* Command Name */
|
||||
};
|
||||
|
||||
/*
|
||||
* accounting flags
|
||||
*/
|
||||
/* bit set when the process ... */
|
||||
#define AFORK 0x01 /* ... executed fork, but did not exec */
|
||||
#define ASU 0x02 /* ... used super-user privileges */
|
||||
#define ACOMPAT 0x04 /* ... used compatibility mode (VAX only not used) */
|
||||
#define ACORE 0x08 /* ... dumped core */
|
||||
#define AXSIG 0x10 /* ... was killed by a signal */
|
||||
|
||||
#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
|
||||
#define ACCT_BYTEORDER 0x80 /* accounting file is big endian */
|
||||
#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
|
||||
#define ACCT_BYTEORDER 0x00 /* accounting file is little endian */
|
||||
#else
|
||||
#error unspecified endianness
|
||||
#endif
|
||||
|
||||
#define ACCT_VERSION 2
|
||||
#define AHZ (HZ)
|
||||
|
||||
|
||||
#endif /* _LINUX_ACCT_H */
|
||||
45
ramdisk/initramfs/glibc_riscv64/usr/include/linux/adb.h
Normal file
45
ramdisk/initramfs/glibc_riscv64/usr/include/linux/adb.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Definitions for ADB (Apple Desktop Bus) support.
|
||||
*/
|
||||
#ifndef __ADB_H
|
||||
#define __ADB_H
|
||||
|
||||
/* ADB commands */
|
||||
#define ADB_BUSRESET 0
|
||||
#define ADB_FLUSH(id) (0x01 | ((id) << 4))
|
||||
#define ADB_WRITEREG(id, reg) (0x08 | (reg) | ((id) << 4))
|
||||
#define ADB_READREG(id, reg) (0x0C | (reg) | ((id) << 4))
|
||||
|
||||
/* ADB default device IDs (upper 4 bits of ADB command byte) */
|
||||
#define ADB_DONGLE 1 /* "software execution control" devices */
|
||||
#define ADB_KEYBOARD 2
|
||||
#define ADB_MOUSE 3
|
||||
#define ADB_TABLET 4
|
||||
#define ADB_MODEM 5
|
||||
#define ADB_MISC 7 /* maybe a monitor */
|
||||
|
||||
#define ADB_RET_OK 0
|
||||
#define ADB_RET_TIMEOUT 3
|
||||
|
||||
/* The kind of ADB request. The controller may emulate some
|
||||
or all of those CUDA/PMU packet kinds */
|
||||
#define ADB_PACKET 0
|
||||
#define CUDA_PACKET 1
|
||||
#define ERROR_PACKET 2
|
||||
#define TIMER_PACKET 3
|
||||
#define POWER_PACKET 4
|
||||
#define MACIIC_PACKET 5
|
||||
#define PMU_PACKET 6
|
||||
#define ADB_QUERY 7
|
||||
|
||||
/* ADB queries */
|
||||
|
||||
/* ADB_QUERY_GETDEVINFO
|
||||
* Query ADB slot for device presence
|
||||
* data[2] = id, rep[0] = orig addr, rep[1] = handler_id
|
||||
*/
|
||||
#define ADB_QUERY_GETDEVINFO 1
|
||||
|
||||
|
||||
#endif /* __ADB_H */
|
||||
45
ramdisk/initramfs/glibc_riscv64/usr/include/linux/adfs_fs.h
Normal file
45
ramdisk/initramfs/glibc_riscv64/usr/include/linux/adfs_fs.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _ADFS_FS_H
|
||||
#define _ADFS_FS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/magic.h>
|
||||
|
||||
/*
|
||||
* Disc Record at disc address 0xc00
|
||||
*/
|
||||
struct adfs_discrecord {
|
||||
__u8 log2secsize;
|
||||
__u8 secspertrack;
|
||||
__u8 heads;
|
||||
__u8 density;
|
||||
__u8 idlen;
|
||||
__u8 log2bpmb;
|
||||
__u8 skew;
|
||||
__u8 bootoption;
|
||||
__u8 lowsector;
|
||||
__u8 nzones;
|
||||
__le16 zone_spare;
|
||||
__le32 root;
|
||||
__le32 disc_size;
|
||||
__le16 disc_id;
|
||||
__u8 disc_name[10];
|
||||
__le32 disc_type;
|
||||
__le32 disc_size_high;
|
||||
__u8 log2sharesize:4;
|
||||
__u8 unused40:4;
|
||||
__u8 big_flag:1;
|
||||
__u8 unused41:7;
|
||||
__u8 nzones_high;
|
||||
__u8 reserved43;
|
||||
__le32 format_version;
|
||||
__le32 root_size;
|
||||
__u8 unused52[60 - 52];
|
||||
} __attribute__((packed, aligned(4)));
|
||||
|
||||
#define ADFS_DISCRECORD (0xc00)
|
||||
#define ADFS_DR_OFFSET (0x1c0)
|
||||
#define ADFS_DR_SIZE 60
|
||||
#define ADFS_DR_SIZE_BITS (ADFS_DR_SIZE << 3)
|
||||
|
||||
#endif /* _ADFS_FS_H */
|
||||
@ -0,0 +1,69 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef AFFS_HARDBLOCKS_H
|
||||
#define AFFS_HARDBLOCKS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Just the needed definitions for the RDB of an Amiga HD. */
|
||||
|
||||
struct RigidDiskBlock {
|
||||
__u32 rdb_ID;
|
||||
__be32 rdb_SummedLongs;
|
||||
__s32 rdb_ChkSum;
|
||||
__u32 rdb_HostID;
|
||||
__be32 rdb_BlockBytes;
|
||||
__u32 rdb_Flags;
|
||||
__u32 rdb_BadBlockList;
|
||||
__be32 rdb_PartitionList;
|
||||
__u32 rdb_FileSysHeaderList;
|
||||
__u32 rdb_DriveInit;
|
||||
__u32 rdb_Reserved1[6];
|
||||
__u32 rdb_Cylinders;
|
||||
__u32 rdb_Sectors;
|
||||
__u32 rdb_Heads;
|
||||
__u32 rdb_Interleave;
|
||||
__u32 rdb_Park;
|
||||
__u32 rdb_Reserved2[3];
|
||||
__u32 rdb_WritePreComp;
|
||||
__u32 rdb_ReducedWrite;
|
||||
__u32 rdb_StepRate;
|
||||
__u32 rdb_Reserved3[5];
|
||||
__u32 rdb_RDBBlocksLo;
|
||||
__u32 rdb_RDBBlocksHi;
|
||||
__u32 rdb_LoCylinder;
|
||||
__u32 rdb_HiCylinder;
|
||||
__u32 rdb_CylBlocks;
|
||||
__u32 rdb_AutoParkSeconds;
|
||||
__u32 rdb_HighRDSKBlock;
|
||||
__u32 rdb_Reserved4;
|
||||
char rdb_DiskVendor[8];
|
||||
char rdb_DiskProduct[16];
|
||||
char rdb_DiskRevision[4];
|
||||
char rdb_ControllerVendor[8];
|
||||
char rdb_ControllerProduct[16];
|
||||
char rdb_ControllerRevision[4];
|
||||
__u32 rdb_Reserved5[10];
|
||||
};
|
||||
|
||||
#define IDNAME_RIGIDDISK 0x5244534B /* "RDSK" */
|
||||
|
||||
struct PartitionBlock {
|
||||
__be32 pb_ID;
|
||||
__be32 pb_SummedLongs;
|
||||
__s32 pb_ChkSum;
|
||||
__u32 pb_HostID;
|
||||
__be32 pb_Next;
|
||||
__u32 pb_Flags;
|
||||
__u32 pb_Reserved1[2];
|
||||
__u32 pb_DevFlags;
|
||||
__u8 pb_DriveName[32];
|
||||
__u32 pb_Reserved2[15];
|
||||
__be32 pb_Environment[17];
|
||||
__u32 pb_EReserved[15];
|
||||
};
|
||||
|
||||
#define IDNAME_PARTITION 0x50415254 /* "PART" */
|
||||
|
||||
#define RDB_ALLOCATION_LIMIT 16
|
||||
|
||||
#endif /* AFFS_HARDBLOCKS_H */
|
||||
112
ramdisk/initramfs/glibc_riscv64/usr/include/linux/agpgart.h
Normal file
112
ramdisk/initramfs/glibc_riscv64/usr/include/linux/agpgart.h
Normal file
@ -0,0 +1,112 @@
|
||||
/*
|
||||
* AGPGART module version 0.99
|
||||
* Copyright (C) 1999 Jeff Hartmann
|
||||
* Copyright (C) 1999 Precision Insight, Inc.
|
||||
* Copyright (C) 1999 Xi Graphics, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _AGP_H
|
||||
#define _AGP_H
|
||||
|
||||
#define AGPIOC_BASE 'A'
|
||||
#define AGPIOC_INFO _IOR (AGPIOC_BASE, 0, struct agp_info*)
|
||||
#define AGPIOC_ACQUIRE _IO (AGPIOC_BASE, 1)
|
||||
#define AGPIOC_RELEASE _IO (AGPIOC_BASE, 2)
|
||||
#define AGPIOC_SETUP _IOW (AGPIOC_BASE, 3, struct agp_setup*)
|
||||
#define AGPIOC_RESERVE _IOW (AGPIOC_BASE, 4, struct agp_region*)
|
||||
#define AGPIOC_PROTECT _IOW (AGPIOC_BASE, 5, struct agp_region*)
|
||||
#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 6, struct agp_allocate*)
|
||||
#define AGPIOC_DEALLOCATE _IOW (AGPIOC_BASE, 7, int)
|
||||
#define AGPIOC_BIND _IOW (AGPIOC_BASE, 8, struct agp_bind*)
|
||||
#define AGPIOC_UNBIND _IOW (AGPIOC_BASE, 9, struct agp_unbind*)
|
||||
#define AGPIOC_CHIPSET_FLUSH _IO (AGPIOC_BASE, 10)
|
||||
|
||||
#define AGP_DEVICE "/dev/agpgart"
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
struct agp_version {
|
||||
__u16 major;
|
||||
__u16 minor;
|
||||
};
|
||||
|
||||
typedef struct _agp_info {
|
||||
struct agp_version version; /* version of the driver */
|
||||
__u32 bridge_id; /* bridge vendor/device */
|
||||
__u32 agp_mode; /* mode info of bridge */
|
||||
unsigned long aper_base;/* base of aperture */
|
||||
size_t aper_size; /* size of aperture */
|
||||
size_t pg_total; /* max pages (swap + system) */
|
||||
size_t pg_system; /* max pages (system) */
|
||||
size_t pg_used; /* current pages used */
|
||||
} agp_info;
|
||||
|
||||
typedef struct _agp_setup {
|
||||
__u32 agp_mode; /* mode info of bridge */
|
||||
} agp_setup;
|
||||
|
||||
/*
|
||||
* The "prot" down below needs still a "sleep" flag somehow ...
|
||||
*/
|
||||
typedef struct _agp_segment {
|
||||
__kernel_off_t pg_start; /* starting page to populate */
|
||||
__kernel_size_t pg_count; /* number of pages */
|
||||
int prot; /* prot flags for mmap */
|
||||
} agp_segment;
|
||||
|
||||
typedef struct _agp_region {
|
||||
__kernel_pid_t pid; /* pid of process */
|
||||
__kernel_size_t seg_count; /* number of segments */
|
||||
struct _agp_segment *seg_list;
|
||||
} agp_region;
|
||||
|
||||
typedef struct _agp_allocate {
|
||||
int key; /* tag of allocation */
|
||||
__kernel_size_t pg_count;/* number of pages */
|
||||
__u32 type; /* 0 == normal, other devspec */
|
||||
__u32 physical; /* device specific (some devices
|
||||
* need a phys address of the
|
||||
* actual page behind the gatt
|
||||
* table) */
|
||||
} agp_allocate;
|
||||
|
||||
typedef struct _agp_bind {
|
||||
int key; /* tag of allocation */
|
||||
__kernel_off_t pg_start;/* starting page to populate */
|
||||
} agp_bind;
|
||||
|
||||
typedef struct _agp_unbind {
|
||||
int key; /* tag of allocation */
|
||||
__u32 priority; /* priority for paging out */
|
||||
} agp_unbind;
|
||||
|
||||
|
||||
#endif /* _AGP_H */
|
||||
113
ramdisk/initramfs/glibc_riscv64/usr/include/linux/aio_abi.h
Normal file
113
ramdisk/initramfs/glibc_riscv64/usr/include/linux/aio_abi.h
Normal file
@ -0,0 +1,113 @@
|
||||
/* include/linux/aio_abi.h
|
||||
*
|
||||
* Copyright 2000,2001,2002 Red Hat.
|
||||
*
|
||||
* Written by Benjamin LaHaise <bcrl@kvack.org>
|
||||
*
|
||||
* Distribute under the terms of the GPLv2 (see ../../COPYING) or under
|
||||
* the following terms.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation is hereby granted, provided that the above copyright
|
||||
* notice appears in all copies. This software is provided without any
|
||||
* warranty, express or implied. Red Hat makes no representations about
|
||||
* the suitability of this software for any purpose.
|
||||
*
|
||||
* IN NO EVENT SHALL RED HAT BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||
* SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
|
||||
* THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RED HAT HAS BEEN ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* RED HAT DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
|
||||
* RED HAT HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
|
||||
* ENHANCEMENTS, OR MODIFICATIONS.
|
||||
*/
|
||||
#ifndef __LINUX__AIO_ABI_H
|
||||
#define __LINUX__AIO_ABI_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/fs.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
typedef __kernel_ulong_t aio_context_t;
|
||||
|
||||
enum {
|
||||
IOCB_CMD_PREAD = 0,
|
||||
IOCB_CMD_PWRITE = 1,
|
||||
IOCB_CMD_FSYNC = 2,
|
||||
IOCB_CMD_FDSYNC = 3,
|
||||
/* 4 was the experimental IOCB_CMD_PREADX */
|
||||
IOCB_CMD_POLL = 5,
|
||||
IOCB_CMD_NOOP = 6,
|
||||
IOCB_CMD_PREADV = 7,
|
||||
IOCB_CMD_PWRITEV = 8,
|
||||
};
|
||||
|
||||
/*
|
||||
* Valid flags for the "aio_flags" member of the "struct iocb".
|
||||
*
|
||||
* IOCB_FLAG_RESFD - Set if the "aio_resfd" member of the "struct iocb"
|
||||
* is valid.
|
||||
* IOCB_FLAG_IOPRIO - Set if the "aio_reqprio" member of the "struct iocb"
|
||||
* is valid.
|
||||
*/
|
||||
#define IOCB_FLAG_RESFD (1 << 0)
|
||||
#define IOCB_FLAG_IOPRIO (1 << 1)
|
||||
|
||||
/* read() from /dev/aio returns these structures. */
|
||||
struct io_event {
|
||||
__u64 data; /* the data field from the iocb */
|
||||
__u64 obj; /* what iocb this event came from */
|
||||
__s64 res; /* result code for this event */
|
||||
__s64 res2; /* secondary result */
|
||||
};
|
||||
|
||||
/*
|
||||
* we always use a 64bit off_t when communicating
|
||||
* with userland. its up to libraries to do the
|
||||
* proper padding and aio_error abstraction
|
||||
*/
|
||||
|
||||
struct iocb {
|
||||
/* these are internal to the kernel/libc. */
|
||||
__u64 aio_data; /* data to be returned in event's data */
|
||||
|
||||
#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
|
||||
__u32 aio_key; /* the kernel sets aio_key to the req # */
|
||||
__kernel_rwf_t aio_rw_flags; /* RWF_* flags */
|
||||
#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
|
||||
__kernel_rwf_t aio_rw_flags; /* RWF_* flags */
|
||||
__u32 aio_key; /* the kernel sets aio_key to the req # */
|
||||
#else
|
||||
#error edit for your odd byteorder.
|
||||
#endif
|
||||
|
||||
/* common fields */
|
||||
__u16 aio_lio_opcode; /* see IOCB_CMD_ above */
|
||||
__s16 aio_reqprio;
|
||||
__u32 aio_fildes;
|
||||
|
||||
__u64 aio_buf;
|
||||
__u64 aio_nbytes;
|
||||
__s64 aio_offset;
|
||||
|
||||
/* extra parameters */
|
||||
__u64 aio_reserved2; /* TODO: use this for a (struct sigevent *) */
|
||||
|
||||
/* flags for the "struct iocb" */
|
||||
__u32 aio_flags;
|
||||
|
||||
/*
|
||||
* if the IOCB_FLAG_RESFD flag of "aio_flags" is set, this is an
|
||||
* eventfd to signal AIO readiness to
|
||||
*/
|
||||
__u32 aio_resfd;
|
||||
}; /* 64 bytes */
|
||||
|
||||
#undef IFBIG
|
||||
#undef IFLITTLE
|
||||
|
||||
#endif /* __LINUX__AIO_ABI_H */
|
||||
|
||||
125
ramdisk/initramfs/glibc_riscv64/usr/include/linux/am437x-vpfe.h
Normal file
125
ramdisk/initramfs/glibc_riscv64/usr/include/linux/am437x-vpfe.h
Normal file
@ -0,0 +1,125 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2013 - 2014 Texas Instruments, Inc.
|
||||
*
|
||||
* Benoit Parrot <bparrot@ti.com>
|
||||
* Lad, Prabhakar <prabhakar.csengg@gmail.com>
|
||||
*
|
||||
* This program is free software; you may redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef AM437X_VPFE_USER_H
|
||||
#define AM437X_VPFE_USER_H
|
||||
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
enum vpfe_ccdc_data_size {
|
||||
VPFE_CCDC_DATA_16BITS = 0,
|
||||
VPFE_CCDC_DATA_15BITS,
|
||||
VPFE_CCDC_DATA_14BITS,
|
||||
VPFE_CCDC_DATA_13BITS,
|
||||
VPFE_CCDC_DATA_12BITS,
|
||||
VPFE_CCDC_DATA_11BITS,
|
||||
VPFE_CCDC_DATA_10BITS,
|
||||
VPFE_CCDC_DATA_8BITS,
|
||||
};
|
||||
|
||||
/* enum for No of pixel per line to be avg. in Black Clamping*/
|
||||
enum vpfe_ccdc_sample_length {
|
||||
VPFE_CCDC_SAMPLE_1PIXELS = 0,
|
||||
VPFE_CCDC_SAMPLE_2PIXELS,
|
||||
VPFE_CCDC_SAMPLE_4PIXELS,
|
||||
VPFE_CCDC_SAMPLE_8PIXELS,
|
||||
VPFE_CCDC_SAMPLE_16PIXELS,
|
||||
};
|
||||
|
||||
/* enum for No of lines in Black Clamping */
|
||||
enum vpfe_ccdc_sample_line {
|
||||
VPFE_CCDC_SAMPLE_1LINES = 0,
|
||||
VPFE_CCDC_SAMPLE_2LINES,
|
||||
VPFE_CCDC_SAMPLE_4LINES,
|
||||
VPFE_CCDC_SAMPLE_8LINES,
|
||||
VPFE_CCDC_SAMPLE_16LINES,
|
||||
};
|
||||
|
||||
/* enum for Alaw gamma width */
|
||||
enum vpfe_ccdc_gamma_width {
|
||||
VPFE_CCDC_GAMMA_BITS_15_6 = 0, /* use bits 15-6 for gamma */
|
||||
VPFE_CCDC_GAMMA_BITS_14_5,
|
||||
VPFE_CCDC_GAMMA_BITS_13_4,
|
||||
VPFE_CCDC_GAMMA_BITS_12_3,
|
||||
VPFE_CCDC_GAMMA_BITS_11_2,
|
||||
VPFE_CCDC_GAMMA_BITS_10_1,
|
||||
VPFE_CCDC_GAMMA_BITS_09_0, /* use bits 9-0 for gamma */
|
||||
};
|
||||
|
||||
/* structure for ALaw */
|
||||
struct vpfe_ccdc_a_law {
|
||||
/* Enable/disable A-Law */
|
||||
unsigned char enable;
|
||||
/* Gamma Width Input */
|
||||
enum vpfe_ccdc_gamma_width gamma_wd;
|
||||
};
|
||||
|
||||
/* structure for Black Clamping */
|
||||
struct vpfe_ccdc_black_clamp {
|
||||
unsigned char enable;
|
||||
/* only if bClampEnable is TRUE */
|
||||
enum vpfe_ccdc_sample_length sample_pixel;
|
||||
/* only if bClampEnable is TRUE */
|
||||
enum vpfe_ccdc_sample_line sample_ln;
|
||||
/* only if bClampEnable is TRUE */
|
||||
unsigned short start_pixel;
|
||||
/* only if bClampEnable is TRUE */
|
||||
unsigned short sgain;
|
||||
/* only if bClampEnable is FALSE */
|
||||
unsigned short dc_sub;
|
||||
};
|
||||
|
||||
/* structure for Black Level Compensation */
|
||||
struct vpfe_ccdc_black_compensation {
|
||||
/* Constant value to subtract from Red component */
|
||||
char r;
|
||||
/* Constant value to subtract from Gr component */
|
||||
char gr;
|
||||
/* Constant value to subtract from Blue component */
|
||||
char b;
|
||||
/* Constant value to subtract from Gb component */
|
||||
char gb;
|
||||
};
|
||||
|
||||
/* Structure for CCDC configuration parameters for raw capture mode passed
|
||||
* by application
|
||||
*/
|
||||
struct vpfe_ccdc_config_params_raw {
|
||||
/* data size value from 8 to 16 bits */
|
||||
enum vpfe_ccdc_data_size data_sz;
|
||||
/* Structure for Optional A-Law */
|
||||
struct vpfe_ccdc_a_law alaw;
|
||||
/* Structure for Optical Black Clamp */
|
||||
struct vpfe_ccdc_black_clamp blk_clamp;
|
||||
/* Structure for Black Compensation */
|
||||
struct vpfe_ccdc_black_compensation blk_comp;
|
||||
};
|
||||
|
||||
/*
|
||||
* Private IOCTL
|
||||
* VIDIOC_AM437X_CCDC_CFG - Set CCDC configuration for raw capture
|
||||
* This is an experimental ioctl that will change in future kernels. So use
|
||||
* this ioctl with care !
|
||||
**/
|
||||
#define VIDIOC_AM437X_CCDC_CFG \
|
||||
_IOW('V', BASE_VIDIOC_PRIVATE + 1, void *)
|
||||
|
||||
#endif /* AM437X_VPFE_USER_H */
|
||||
@ -0,0 +1,496 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2008 Google, Inc.
|
||||
*
|
||||
* Based on, but no longer compatible with, the original
|
||||
* OpenBinder.org binder driver interface, which is:
|
||||
*
|
||||
* Copyright (c) 2005 Palmsource, Inc.
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_BINDER_H
|
||||
#define _LINUX_BINDER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define B_PACK_CHARS(c1, c2, c3, c4) \
|
||||
((((c1)<<24)) | (((c2)<<16)) | (((c3)<<8)) | (c4))
|
||||
#define B_TYPE_LARGE 0x85
|
||||
|
||||
enum {
|
||||
BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),
|
||||
BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),
|
||||
BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
|
||||
BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
|
||||
BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
|
||||
BINDER_TYPE_FDA = B_PACK_CHARS('f', 'd', 'a', B_TYPE_LARGE),
|
||||
BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
|
||||
};
|
||||
|
||||
enum {
|
||||
FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
|
||||
FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
|
||||
|
||||
/**
|
||||
* @FLAT_BINDER_FLAG_TXN_SECURITY_CTX: request security contexts
|
||||
*
|
||||
* Only when set, causes senders to include their security
|
||||
* context
|
||||
*/
|
||||
FLAT_BINDER_FLAG_TXN_SECURITY_CTX = 0x1000,
|
||||
};
|
||||
|
||||
#ifdef BINDER_IPC_32BIT
|
||||
typedef __u32 binder_size_t;
|
||||
typedef __u32 binder_uintptr_t;
|
||||
#else
|
||||
typedef __u64 binder_size_t;
|
||||
typedef __u64 binder_uintptr_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* struct binder_object_header - header shared by all binder metadata objects.
|
||||
* @type: type of the object
|
||||
*/
|
||||
struct binder_object_header {
|
||||
__u32 type;
|
||||
};
|
||||
|
||||
/*
|
||||
* This is the flattened representation of a Binder object for transfer
|
||||
* between processes. The 'offsets' supplied as part of a binder transaction
|
||||
* contains offsets into the data where these structures occur. The Binder
|
||||
* driver takes care of re-writing the structure type and data as it moves
|
||||
* between processes.
|
||||
*/
|
||||
struct flat_binder_object {
|
||||
struct binder_object_header hdr;
|
||||
__u32 flags;
|
||||
|
||||
/* 8 bytes of data. */
|
||||
union {
|
||||
binder_uintptr_t binder; /* local object */
|
||||
__u32 handle; /* remote object */
|
||||
};
|
||||
|
||||
/* extra data associated with local object */
|
||||
binder_uintptr_t cookie;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct binder_fd_object - describes a filedescriptor to be fixed up.
|
||||
* @hdr: common header structure
|
||||
* @pad_flags: padding to remain compatible with old userspace code
|
||||
* @pad_binder: padding to remain compatible with old userspace code
|
||||
* @fd: file descriptor
|
||||
* @cookie: opaque data, used by user-space
|
||||
*/
|
||||
struct binder_fd_object {
|
||||
struct binder_object_header hdr;
|
||||
__u32 pad_flags;
|
||||
union {
|
||||
binder_uintptr_t pad_binder;
|
||||
__u32 fd;
|
||||
};
|
||||
|
||||
binder_uintptr_t cookie;
|
||||
};
|
||||
|
||||
/* struct binder_buffer_object - object describing a userspace buffer
|
||||
* @hdr: common header structure
|
||||
* @flags: one or more BINDER_BUFFER_* flags
|
||||
* @buffer: address of the buffer
|
||||
* @length: length of the buffer
|
||||
* @parent: index in offset array pointing to parent buffer
|
||||
* @parent_offset: offset in @parent pointing to this buffer
|
||||
*
|
||||
* A binder_buffer object represents an object that the
|
||||
* binder kernel driver can copy verbatim to the target
|
||||
* address space. A buffer itself may be pointed to from
|
||||
* within another buffer, meaning that the pointer inside
|
||||
* that other buffer needs to be fixed up as well. This
|
||||
* can be done by setting the BINDER_BUFFER_FLAG_HAS_PARENT
|
||||
* flag in @flags, by setting @parent buffer to the index
|
||||
* in the offset array pointing to the parent binder_buffer_object,
|
||||
* and by setting @parent_offset to the offset in the parent buffer
|
||||
* at which the pointer to this buffer is located.
|
||||
*/
|
||||
struct binder_buffer_object {
|
||||
struct binder_object_header hdr;
|
||||
__u32 flags;
|
||||
binder_uintptr_t buffer;
|
||||
binder_size_t length;
|
||||
binder_size_t parent;
|
||||
binder_size_t parent_offset;
|
||||
};
|
||||
|
||||
enum {
|
||||
BINDER_BUFFER_FLAG_HAS_PARENT = 0x01,
|
||||
};
|
||||
|
||||
/* struct binder_fd_array_object - object describing an array of fds in a buffer
|
||||
* @hdr: common header structure
|
||||
* @pad: padding to ensure correct alignment
|
||||
* @num_fds: number of file descriptors in the buffer
|
||||
* @parent: index in offset array to buffer holding the fd array
|
||||
* @parent_offset: start offset of fd array in the buffer
|
||||
*
|
||||
* A binder_fd_array object represents an array of file
|
||||
* descriptors embedded in a binder_buffer_object. It is
|
||||
* different from a regular binder_buffer_object because it
|
||||
* describes a list of file descriptors to fix up, not an opaque
|
||||
* blob of memory, and hence the kernel needs to treat it differently.
|
||||
*
|
||||
* An example of how this would be used is with Android's
|
||||
* native_handle_t object, which is a struct with a list of integers
|
||||
* and a list of file descriptors. The native_handle_t struct itself
|
||||
* will be represented by a struct binder_buffer_objct, whereas the
|
||||
* embedded list of file descriptors is represented by a
|
||||
* struct binder_fd_array_object with that binder_buffer_object as
|
||||
* a parent.
|
||||
*/
|
||||
struct binder_fd_array_object {
|
||||
struct binder_object_header hdr;
|
||||
__u32 pad;
|
||||
binder_size_t num_fds;
|
||||
binder_size_t parent;
|
||||
binder_size_t parent_offset;
|
||||
};
|
||||
|
||||
/*
|
||||
* On 64-bit platforms where user code may run in 32-bits the driver must
|
||||
* translate the buffer (and local binder) addresses appropriately.
|
||||
*/
|
||||
|
||||
struct binder_write_read {
|
||||
binder_size_t write_size; /* bytes to write */
|
||||
binder_size_t write_consumed; /* bytes consumed by driver */
|
||||
binder_uintptr_t write_buffer;
|
||||
binder_size_t read_size; /* bytes to read */
|
||||
binder_size_t read_consumed; /* bytes consumed by driver */
|
||||
binder_uintptr_t read_buffer;
|
||||
};
|
||||
|
||||
/* Use with BINDER_VERSION, driver fills in fields. */
|
||||
struct binder_version {
|
||||
/* driver protocol version -- increment with incompatible change */
|
||||
__s32 protocol_version;
|
||||
};
|
||||
|
||||
/* This is the current protocol version. */
|
||||
#ifdef BINDER_IPC_32BIT
|
||||
#define BINDER_CURRENT_PROTOCOL_VERSION 7
|
||||
#else
|
||||
#define BINDER_CURRENT_PROTOCOL_VERSION 8
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Use with BINDER_GET_NODE_DEBUG_INFO, driver reads ptr, writes to all fields.
|
||||
* Set ptr to NULL for the first call to get the info for the first node, and
|
||||
* then repeat the call passing the previously returned value to get the next
|
||||
* nodes. ptr will be 0 when there are no more nodes.
|
||||
*/
|
||||
struct binder_node_debug_info {
|
||||
binder_uintptr_t ptr;
|
||||
binder_uintptr_t cookie;
|
||||
__u32 has_strong_ref;
|
||||
__u32 has_weak_ref;
|
||||
};
|
||||
|
||||
struct binder_node_info_for_ref {
|
||||
__u32 handle;
|
||||
__u32 strong_count;
|
||||
__u32 weak_count;
|
||||
__u32 reserved1;
|
||||
__u32 reserved2;
|
||||
__u32 reserved3;
|
||||
};
|
||||
|
||||
#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
|
||||
#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
|
||||
#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
|
||||
#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32)
|
||||
#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, __s32)
|
||||
#define BINDER_THREAD_EXIT _IOW('b', 8, __s32)
|
||||
#define BINDER_VERSION _IOWR('b', 9, struct binder_version)
|
||||
#define BINDER_GET_NODE_DEBUG_INFO _IOWR('b', 11, struct binder_node_debug_info)
|
||||
#define BINDER_GET_NODE_INFO_FOR_REF _IOWR('b', 12, struct binder_node_info_for_ref)
|
||||
#define BINDER_SET_CONTEXT_MGR_EXT _IOW('b', 13, struct flat_binder_object)
|
||||
|
||||
/*
|
||||
* NOTE: Two special error codes you should check for when calling
|
||||
* in to the driver are:
|
||||
*
|
||||
* EINTR -- The operation has been interupted. This should be
|
||||
* handled by retrying the ioctl() until a different error code
|
||||
* is returned.
|
||||
*
|
||||
* ECONNREFUSED -- The driver is no longer accepting operations
|
||||
* from your process. That is, the process is being destroyed.
|
||||
* You should handle this by exiting from your process. Note
|
||||
* that once this error code is returned, all further calls to
|
||||
* the driver from any thread will return this same code.
|
||||
*/
|
||||
|
||||
enum transaction_flags {
|
||||
TF_ONE_WAY = 0x01, /* this is a one-way call: async, no return */
|
||||
TF_ROOT_OBJECT = 0x04, /* contents are the component's root object */
|
||||
TF_STATUS_CODE = 0x08, /* contents are a 32-bit status code */
|
||||
TF_ACCEPT_FDS = 0x10, /* allow replies with file descriptors */
|
||||
};
|
||||
|
||||
struct binder_transaction_data {
|
||||
/* The first two are only used for bcTRANSACTION and brTRANSACTION,
|
||||
* identifying the target and contents of the transaction.
|
||||
*/
|
||||
union {
|
||||
/* target descriptor of command transaction */
|
||||
__u32 handle;
|
||||
/* target descriptor of return transaction */
|
||||
binder_uintptr_t ptr;
|
||||
} target;
|
||||
binder_uintptr_t cookie; /* target object cookie */
|
||||
__u32 code; /* transaction command */
|
||||
|
||||
/* General information about the transaction. */
|
||||
__u32 flags;
|
||||
pid_t sender_pid;
|
||||
uid_t sender_euid;
|
||||
binder_size_t data_size; /* number of bytes of data */
|
||||
binder_size_t offsets_size; /* number of bytes of offsets */
|
||||
|
||||
/* If this transaction is inline, the data immediately
|
||||
* follows here; otherwise, it ends with a pointer to
|
||||
* the data buffer.
|
||||
*/
|
||||
union {
|
||||
struct {
|
||||
/* transaction data */
|
||||
binder_uintptr_t buffer;
|
||||
/* offsets from buffer to flat_binder_object structs */
|
||||
binder_uintptr_t offsets;
|
||||
} ptr;
|
||||
__u8 buf[8];
|
||||
} data;
|
||||
};
|
||||
|
||||
struct binder_transaction_data_secctx {
|
||||
struct binder_transaction_data transaction_data;
|
||||
binder_uintptr_t secctx;
|
||||
};
|
||||
|
||||
struct binder_transaction_data_sg {
|
||||
struct binder_transaction_data transaction_data;
|
||||
binder_size_t buffers_size;
|
||||
};
|
||||
|
||||
struct binder_ptr_cookie {
|
||||
binder_uintptr_t ptr;
|
||||
binder_uintptr_t cookie;
|
||||
};
|
||||
|
||||
struct binder_handle_cookie {
|
||||
__u32 handle;
|
||||
binder_uintptr_t cookie;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct binder_pri_desc {
|
||||
__s32 priority;
|
||||
__u32 desc;
|
||||
};
|
||||
|
||||
struct binder_pri_ptr_cookie {
|
||||
__s32 priority;
|
||||
binder_uintptr_t ptr;
|
||||
binder_uintptr_t cookie;
|
||||
};
|
||||
|
||||
enum binder_driver_return_protocol {
|
||||
BR_ERROR = _IOR('r', 0, __s32),
|
||||
/*
|
||||
* int: error code
|
||||
*/
|
||||
|
||||
BR_OK = _IO('r', 1),
|
||||
/* No parameters! */
|
||||
|
||||
BR_TRANSACTION_SEC_CTX = _IOR('r', 2,
|
||||
struct binder_transaction_data_secctx),
|
||||
/*
|
||||
* binder_transaction_data_secctx: the received command.
|
||||
*/
|
||||
BR_TRANSACTION = _IOR('r', 2, struct binder_transaction_data),
|
||||
BR_REPLY = _IOR('r', 3, struct binder_transaction_data),
|
||||
/*
|
||||
* binder_transaction_data: the received command.
|
||||
*/
|
||||
|
||||
BR_ACQUIRE_RESULT = _IOR('r', 4, __s32),
|
||||
/*
|
||||
* not currently supported
|
||||
* int: 0 if the last bcATTEMPT_ACQUIRE was not successful.
|
||||
* Else the remote object has acquired a primary reference.
|
||||
*/
|
||||
|
||||
BR_DEAD_REPLY = _IO('r', 5),
|
||||
/*
|
||||
* The target of the last transaction (either a bcTRANSACTION or
|
||||
* a bcATTEMPT_ACQUIRE) is no longer with us. No parameters.
|
||||
*/
|
||||
|
||||
BR_TRANSACTION_COMPLETE = _IO('r', 6),
|
||||
/*
|
||||
* No parameters... always refers to the last transaction requested
|
||||
* (including replies). Note that this will be sent even for
|
||||
* asynchronous transactions.
|
||||
*/
|
||||
|
||||
BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie),
|
||||
BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie),
|
||||
BR_RELEASE = _IOR('r', 9, struct binder_ptr_cookie),
|
||||
BR_DECREFS = _IOR('r', 10, struct binder_ptr_cookie),
|
||||
/*
|
||||
* void *: ptr to binder
|
||||
* void *: cookie for binder
|
||||
*/
|
||||
|
||||
BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct binder_pri_ptr_cookie),
|
||||
/*
|
||||
* not currently supported
|
||||
* int: priority
|
||||
* void *: ptr to binder
|
||||
* void *: cookie for binder
|
||||
*/
|
||||
|
||||
BR_NOOP = _IO('r', 12),
|
||||
/*
|
||||
* No parameters. Do nothing and examine the next command. It exists
|
||||
* primarily so that we can replace it with a BR_SPAWN_LOOPER command.
|
||||
*/
|
||||
|
||||
BR_SPAWN_LOOPER = _IO('r', 13),
|
||||
/*
|
||||
* No parameters. The driver has determined that a process has no
|
||||
* threads waiting to service incoming transactions. When a process
|
||||
* receives this command, it must spawn a new service thread and
|
||||
* register it via bcENTER_LOOPER.
|
||||
*/
|
||||
|
||||
BR_FINISHED = _IO('r', 14),
|
||||
/*
|
||||
* not currently supported
|
||||
* stop threadpool thread
|
||||
*/
|
||||
|
||||
BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t),
|
||||
/*
|
||||
* void *: cookie
|
||||
*/
|
||||
BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t),
|
||||
/*
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
BR_FAILED_REPLY = _IO('r', 17),
|
||||
/*
|
||||
* The the last transaction (either a bcTRANSACTION or
|
||||
* a bcATTEMPT_ACQUIRE) failed (e.g. out of memory). No parameters.
|
||||
*/
|
||||
};
|
||||
|
||||
enum binder_driver_command_protocol {
|
||||
BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data),
|
||||
BC_REPLY = _IOW('c', 1, struct binder_transaction_data),
|
||||
/*
|
||||
* binder_transaction_data: the sent command.
|
||||
*/
|
||||
|
||||
BC_ACQUIRE_RESULT = _IOW('c', 2, __s32),
|
||||
/*
|
||||
* not currently supported
|
||||
* int: 0 if the last BR_ATTEMPT_ACQUIRE was not successful.
|
||||
* Else you have acquired a primary reference on the object.
|
||||
*/
|
||||
|
||||
BC_FREE_BUFFER = _IOW('c', 3, binder_uintptr_t),
|
||||
/*
|
||||
* void *: ptr to transaction data received on a read
|
||||
*/
|
||||
|
||||
BC_INCREFS = _IOW('c', 4, __u32),
|
||||
BC_ACQUIRE = _IOW('c', 5, __u32),
|
||||
BC_RELEASE = _IOW('c', 6, __u32),
|
||||
BC_DECREFS = _IOW('c', 7, __u32),
|
||||
/*
|
||||
* int: descriptor
|
||||
*/
|
||||
|
||||
BC_INCREFS_DONE = _IOW('c', 8, struct binder_ptr_cookie),
|
||||
BC_ACQUIRE_DONE = _IOW('c', 9, struct binder_ptr_cookie),
|
||||
/*
|
||||
* void *: ptr to binder
|
||||
* void *: cookie for binder
|
||||
*/
|
||||
|
||||
BC_ATTEMPT_ACQUIRE = _IOW('c', 10, struct binder_pri_desc),
|
||||
/*
|
||||
* not currently supported
|
||||
* int: priority
|
||||
* int: descriptor
|
||||
*/
|
||||
|
||||
BC_REGISTER_LOOPER = _IO('c', 11),
|
||||
/*
|
||||
* No parameters.
|
||||
* Register a spawned looper thread with the device.
|
||||
*/
|
||||
|
||||
BC_ENTER_LOOPER = _IO('c', 12),
|
||||
BC_EXIT_LOOPER = _IO('c', 13),
|
||||
/*
|
||||
* No parameters.
|
||||
* These two commands are sent as an application-level thread
|
||||
* enters and exits the binder loop, respectively. They are
|
||||
* used so the binder can have an accurate count of the number
|
||||
* of looping threads it has available.
|
||||
*/
|
||||
|
||||
BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14,
|
||||
struct binder_handle_cookie),
|
||||
/*
|
||||
* int: handle
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15,
|
||||
struct binder_handle_cookie),
|
||||
/*
|
||||
* int: handle
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t),
|
||||
/*
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
BC_TRANSACTION_SG = _IOW('c', 17, struct binder_transaction_data_sg),
|
||||
BC_REPLY_SG = _IOW('c', 18, struct binder_transaction_data_sg),
|
||||
/*
|
||||
* binder_transaction_data_sg: the sent command.
|
||||
*/
|
||||
};
|
||||
|
||||
#endif /* _LINUX_BINDER_H */
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2018 Canonical Ltd.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_BINDERFS_H
|
||||
#define _LINUX_BINDERFS_H
|
||||
|
||||
#include <linux/android/binder.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define BINDERFS_MAX_NAME 255
|
||||
|
||||
/**
|
||||
* struct binderfs_device - retrieve information about a new binder device
|
||||
* @name: the name to use for the new binderfs binder device
|
||||
* @major: major number allocated for binderfs binder devices
|
||||
* @minor: minor number allocated for the new binderfs binder device
|
||||
*
|
||||
*/
|
||||
struct binderfs_device {
|
||||
char name[BINDERFS_MAX_NAME + 1];
|
||||
__u32 major;
|
||||
__u32 minor;
|
||||
};
|
||||
|
||||
/**
|
||||
* Allocate a new binder device.
|
||||
*/
|
||||
#define BINDER_CTL_ADD _IOWR('b', 1, struct binderfs_device)
|
||||
|
||||
#endif /* _LINUX_BINDERFS_H */
|
||||
|
||||
138
ramdisk/initramfs/glibc_riscv64/usr/include/linux/apm_bios.h
Normal file
138
ramdisk/initramfs/glibc_riscv64/usr/include/linux/apm_bios.h
Normal file
@ -0,0 +1,138 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Include file for the interface to an APM BIOS
|
||||
* Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*/
|
||||
#ifndef _LINUX_APM_H
|
||||
#define _LINUX_APM_H
|
||||
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
typedef unsigned short apm_event_t;
|
||||
typedef unsigned short apm_eventinfo_t;
|
||||
|
||||
struct apm_bios_info {
|
||||
__u16 version;
|
||||
__u16 cseg;
|
||||
__u32 offset;
|
||||
__u16 cseg_16;
|
||||
__u16 dseg;
|
||||
__u16 flags;
|
||||
__u16 cseg_len;
|
||||
__u16 cseg_16_len;
|
||||
__u16 dseg_len;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Power states
|
||||
*/
|
||||
#define APM_STATE_READY 0x0000
|
||||
#define APM_STATE_STANDBY 0x0001
|
||||
#define APM_STATE_SUSPEND 0x0002
|
||||
#define APM_STATE_OFF 0x0003
|
||||
#define APM_STATE_BUSY 0x0004
|
||||
#define APM_STATE_REJECT 0x0005
|
||||
#define APM_STATE_OEM_SYS 0x0020
|
||||
#define APM_STATE_OEM_DEV 0x0040
|
||||
|
||||
#define APM_STATE_DISABLE 0x0000
|
||||
#define APM_STATE_ENABLE 0x0001
|
||||
|
||||
#define APM_STATE_DISENGAGE 0x0000
|
||||
#define APM_STATE_ENGAGE 0x0001
|
||||
|
||||
/*
|
||||
* Events (results of Get PM Event)
|
||||
*/
|
||||
#define APM_SYS_STANDBY 0x0001
|
||||
#define APM_SYS_SUSPEND 0x0002
|
||||
#define APM_NORMAL_RESUME 0x0003
|
||||
#define APM_CRITICAL_RESUME 0x0004
|
||||
#define APM_LOW_BATTERY 0x0005
|
||||
#define APM_POWER_STATUS_CHANGE 0x0006
|
||||
#define APM_UPDATE_TIME 0x0007
|
||||
#define APM_CRITICAL_SUSPEND 0x0008
|
||||
#define APM_USER_STANDBY 0x0009
|
||||
#define APM_USER_SUSPEND 0x000a
|
||||
#define APM_STANDBY_RESUME 0x000b
|
||||
#define APM_CAPABILITY_CHANGE 0x000c
|
||||
#define APM_USER_HIBERNATION 0x000d
|
||||
#define APM_HIBERNATION_RESUME 0x000e
|
||||
|
||||
/*
|
||||
* Error codes
|
||||
*/
|
||||
#define APM_SUCCESS 0x00
|
||||
#define APM_DISABLED 0x01
|
||||
#define APM_CONNECTED 0x02
|
||||
#define APM_NOT_CONNECTED 0x03
|
||||
#define APM_16_CONNECTED 0x05
|
||||
#define APM_16_UNSUPPORTED 0x06
|
||||
#define APM_32_CONNECTED 0x07
|
||||
#define APM_32_UNSUPPORTED 0x08
|
||||
#define APM_BAD_DEVICE 0x09
|
||||
#define APM_BAD_PARAM 0x0a
|
||||
#define APM_NOT_ENGAGED 0x0b
|
||||
#define APM_BAD_FUNCTION 0x0c
|
||||
#define APM_RESUME_DISABLED 0x0d
|
||||
#define APM_NO_ERROR 0x53
|
||||
#define APM_BAD_STATE 0x60
|
||||
#define APM_NO_EVENTS 0x80
|
||||
#define APM_NOT_PRESENT 0x86
|
||||
|
||||
/*
|
||||
* APM Device IDs
|
||||
*/
|
||||
#define APM_DEVICE_BIOS 0x0000
|
||||
#define APM_DEVICE_ALL 0x0001
|
||||
#define APM_DEVICE_DISPLAY 0x0100
|
||||
#define APM_DEVICE_STORAGE 0x0200
|
||||
#define APM_DEVICE_PARALLEL 0x0300
|
||||
#define APM_DEVICE_SERIAL 0x0400
|
||||
#define APM_DEVICE_NETWORK 0x0500
|
||||
#define APM_DEVICE_PCMCIA 0x0600
|
||||
#define APM_DEVICE_BATTERY 0x8000
|
||||
#define APM_DEVICE_OEM 0xe000
|
||||
#define APM_DEVICE_OLD_ALL 0xffff
|
||||
#define APM_DEVICE_CLASS 0x00ff
|
||||
#define APM_DEVICE_MASK 0xff00
|
||||
|
||||
|
||||
/*
|
||||
* Battery status
|
||||
*/
|
||||
#define APM_MAX_BATTERIES 2
|
||||
|
||||
/*
|
||||
* APM defined capability bit flags
|
||||
*/
|
||||
#define APM_CAP_GLOBAL_STANDBY 0x0001
|
||||
#define APM_CAP_GLOBAL_SUSPEND 0x0002
|
||||
#define APM_CAP_RESUME_STANDBY_TIMER 0x0004 /* Timer resume from standby */
|
||||
#define APM_CAP_RESUME_SUSPEND_TIMER 0x0008 /* Timer resume from suspend */
|
||||
#define APM_CAP_RESUME_STANDBY_RING 0x0010 /* Resume on Ring fr standby */
|
||||
#define APM_CAP_RESUME_SUSPEND_RING 0x0020 /* Resume on Ring fr suspend */
|
||||
#define APM_CAP_RESUME_STANDBY_PCMCIA 0x0040 /* Resume on PCMCIA Ring */
|
||||
#define APM_CAP_RESUME_SUSPEND_PCMCIA 0x0080 /* Resume on PCMCIA Ring */
|
||||
|
||||
/*
|
||||
* ioctl operations
|
||||
*/
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define APM_IOC_STANDBY _IO('A', 1)
|
||||
#define APM_IOC_SUSPEND _IO('A', 2)
|
||||
|
||||
#endif /* _LINUX_APM_H */
|
||||
@ -0,0 +1,9 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __LINUX_ARCFB_H__
|
||||
#define __LINUX_ARCFB_H__
|
||||
|
||||
#define FBIO_WAITEVENT _IO('F', 0x88)
|
||||
#define FBIO_GETCONTROL2 _IOR('F', 0x89, size_t)
|
||||
|
||||
#endif
|
||||
|
||||
73
ramdisk/initramfs/glibc_riscv64/usr/include/linux/arm_sdei.h
Normal file
73
ramdisk/initramfs/glibc_riscv64/usr/include/linux/arm_sdei.h
Normal file
@ -0,0 +1,73 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Copyright (C) 2017 Arm Ltd. */
|
||||
#ifndef _LINUX_ARM_SDEI_H
|
||||
#define _LINUX_ARM_SDEI_H
|
||||
|
||||
#define SDEI_1_0_FN_BASE 0xC4000020
|
||||
#define SDEI_1_0_MASK 0xFFFFFFE0
|
||||
#define SDEI_1_0_FN(n) (SDEI_1_0_FN_BASE + (n))
|
||||
|
||||
#define SDEI_1_0_FN_SDEI_VERSION SDEI_1_0_FN(0x00)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_REGISTER SDEI_1_0_FN(0x01)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_ENABLE SDEI_1_0_FN(0x02)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_DISABLE SDEI_1_0_FN(0x03)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_CONTEXT SDEI_1_0_FN(0x04)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_COMPLETE SDEI_1_0_FN(0x05)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_COMPLETE_AND_RESUME SDEI_1_0_FN(0x06)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_UNREGISTER SDEI_1_0_FN(0x07)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_STATUS SDEI_1_0_FN(0x08)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_GET_INFO SDEI_1_0_FN(0x09)
|
||||
#define SDEI_1_0_FN_SDEI_EVENT_ROUTING_SET SDEI_1_0_FN(0x0A)
|
||||
#define SDEI_1_0_FN_SDEI_PE_MASK SDEI_1_0_FN(0x0B)
|
||||
#define SDEI_1_0_FN_SDEI_PE_UNMASK SDEI_1_0_FN(0x0C)
|
||||
#define SDEI_1_0_FN_SDEI_INTERRUPT_BIND SDEI_1_0_FN(0x0D)
|
||||
#define SDEI_1_0_FN_SDEI_INTERRUPT_RELEASE SDEI_1_0_FN(0x0E)
|
||||
#define SDEI_1_0_FN_SDEI_PRIVATE_RESET SDEI_1_0_FN(0x11)
|
||||
#define SDEI_1_0_FN_SDEI_SHARED_RESET SDEI_1_0_FN(0x12)
|
||||
|
||||
#define SDEI_VERSION_MAJOR_SHIFT 48
|
||||
#define SDEI_VERSION_MAJOR_MASK 0x7fff
|
||||
#define SDEI_VERSION_MINOR_SHIFT 32
|
||||
#define SDEI_VERSION_MINOR_MASK 0xffff
|
||||
#define SDEI_VERSION_VENDOR_SHIFT 0
|
||||
#define SDEI_VERSION_VENDOR_MASK 0xffffffff
|
||||
|
||||
#define SDEI_VERSION_MAJOR(x) (x>>SDEI_VERSION_MAJOR_SHIFT & SDEI_VERSION_MAJOR_MASK)
|
||||
#define SDEI_VERSION_MINOR(x) (x>>SDEI_VERSION_MINOR_SHIFT & SDEI_VERSION_MINOR_MASK)
|
||||
#define SDEI_VERSION_VENDOR(x) (x>>SDEI_VERSION_VENDOR_SHIFT & SDEI_VERSION_VENDOR_MASK)
|
||||
|
||||
/* SDEI return values */
|
||||
#define SDEI_SUCCESS 0
|
||||
#define SDEI_NOT_SUPPORTED -1
|
||||
#define SDEI_INVALID_PARAMETERS -2
|
||||
#define SDEI_DENIED -3
|
||||
#define SDEI_PENDING -5
|
||||
#define SDEI_OUT_OF_RESOURCE -10
|
||||
|
||||
/* EVENT_REGISTER flags */
|
||||
#define SDEI_EVENT_REGISTER_RM_ANY 0
|
||||
#define SDEI_EVENT_REGISTER_RM_PE 1
|
||||
|
||||
/* EVENT_STATUS return value bits */
|
||||
#define SDEI_EVENT_STATUS_RUNNING 2
|
||||
#define SDEI_EVENT_STATUS_ENABLED 1
|
||||
#define SDEI_EVENT_STATUS_REGISTERED 0
|
||||
|
||||
/* EVENT_COMPLETE status values */
|
||||
#define SDEI_EV_HANDLED 0
|
||||
#define SDEI_EV_FAILED 1
|
||||
|
||||
/* GET_INFO values */
|
||||
#define SDEI_EVENT_INFO_EV_TYPE 0
|
||||
#define SDEI_EVENT_INFO_EV_SIGNALED 1
|
||||
#define SDEI_EVENT_INFO_EV_PRIORITY 2
|
||||
#define SDEI_EVENT_INFO_EV_ROUTING_MODE 3
|
||||
#define SDEI_EVENT_INFO_EV_ROUTING_AFF 4
|
||||
|
||||
/* and their results */
|
||||
#define SDEI_EVENT_TYPE_PRIVATE 0
|
||||
#define SDEI_EVENT_TYPE_SHARED 1
|
||||
#define SDEI_EVENT_PRIORITY_NORMAL 0
|
||||
#define SDEI_EVENT_PRIORITY_CRITICAL 1
|
||||
|
||||
#endif /* _LINUX_ARM_SDEI_H */
|
||||
@ -0,0 +1,62 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 2017 IBM Corp.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_ASPEED_LPC_CTRL_H
|
||||
#define _LINUX_ASPEED_LPC_CTRL_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Window types */
|
||||
#define ASPEED_LPC_CTRL_WINDOW_FLASH 1
|
||||
#define ASPEED_LPC_CTRL_WINDOW_MEMORY 2
|
||||
|
||||
/*
|
||||
* This driver provides a window for the host to access a BMC resource
|
||||
* across the BMC <-> Host LPC bus.
|
||||
*
|
||||
* window_type: The BMC resource that the host will access through the
|
||||
* window. BMC flash and BMC RAM.
|
||||
*
|
||||
* window_id: For each window type there may be multiple windows,
|
||||
* these are referenced by ID.
|
||||
*
|
||||
* flags: Reserved for future use, this field is expected to be
|
||||
* zeroed.
|
||||
*
|
||||
* addr: Address on the host LPC bus that the specified window should
|
||||
* be mapped. This address must be power of two aligned.
|
||||
*
|
||||
* offset: Offset into the BMC window that should be mapped to the
|
||||
* host (at addr). This must be a multiple of size.
|
||||
*
|
||||
* size: The size of the mapping. The smallest possible size is 64K.
|
||||
* This must be power of two aligned.
|
||||
*
|
||||
*/
|
||||
|
||||
struct aspeed_lpc_ctrl_mapping {
|
||||
__u8 window_type;
|
||||
__u8 window_id;
|
||||
__u16 flags;
|
||||
__u32 addr;
|
||||
__u32 offset;
|
||||
__u32 size;
|
||||
};
|
||||
|
||||
#define __ASPEED_LPC_CTRL_IOCTL_MAGIC 0xb2
|
||||
|
||||
#define ASPEED_LPC_CTRL_IOCTL_GET_SIZE _IOWR(__ASPEED_LPC_CTRL_IOCTL_MAGIC, \
|
||||
0x00, struct aspeed_lpc_ctrl_mapping)
|
||||
|
||||
#define ASPEED_LPC_CTRL_IOCTL_MAP _IOW(__ASPEED_LPC_CTRL_IOCTL_MAGIC, \
|
||||
0x01, struct aspeed_lpc_ctrl_mapping)
|
||||
|
||||
#endif /* _LINUX_ASPEED_LPC_CTRL_H */
|
||||
@ -0,0 +1,62 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 2019 Google Inc
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* Provides a simple driver to control the ASPEED P2A interface which allows
|
||||
* the host to read and write to various regions of the BMC's memory.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_ASPEED_P2A_CTRL_H
|
||||
#define _LINUX_ASPEED_P2A_CTRL_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define ASPEED_P2A_CTRL_READ_ONLY 0
|
||||
#define ASPEED_P2A_CTRL_READWRITE 1
|
||||
|
||||
/*
|
||||
* This driver provides a mechanism for enabling or disabling the read-write
|
||||
* property of specific windows into the ASPEED BMC's memory.
|
||||
*
|
||||
* A user can map a region of the BMC's memory as read-only or read-write, with
|
||||
* the caveat that once any region is mapped, all regions are unlocked for
|
||||
* reading.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Unlock a region of BMC physical memory for access from the host.
|
||||
*
|
||||
* Also used to read back the optional memory-region configuration for the
|
||||
* driver.
|
||||
*/
|
||||
struct aspeed_p2a_ctrl_mapping {
|
||||
__u64 addr;
|
||||
__u32 length;
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
#define __ASPEED_P2A_CTRL_IOCTL_MAGIC 0xb3
|
||||
|
||||
/*
|
||||
* This IOCTL is meant to configure a region or regions of memory given a
|
||||
* starting address and length to be readable by the host, or
|
||||
* readable-writeable.
|
||||
*/
|
||||
#define ASPEED_P2A_CTRL_IOCTL_SET_WINDOW _IOW(__ASPEED_P2A_CTRL_IOCTL_MAGIC, \
|
||||
0x00, struct aspeed_p2a_ctrl_mapping)
|
||||
|
||||
/*
|
||||
* This IOCTL is meant to read back to the user the base address and length of
|
||||
* the memory-region specified to the driver for use with mmap.
|
||||
*/
|
||||
#define ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG \
|
||||
_IOWR(__ASPEED_P2A_CTRL_IOCTL_MAGIC, \
|
||||
0x01, struct aspeed_p2a_ctrl_mapping)
|
||||
|
||||
#endif /* _LINUX_ASPEED_P2A_CTRL_H */
|
||||
45
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atalk.h
Normal file
45
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atalk.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __LINUX_ATALK_H__
|
||||
#define __LINUX_ATALK_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
/*
|
||||
* AppleTalk networking structures
|
||||
*
|
||||
* The following are directly referenced from the University Of Michigan
|
||||
* netatalk for compatibility reasons.
|
||||
*/
|
||||
#define ATPORT_FIRST 1
|
||||
#define ATPORT_RESERVED 128
|
||||
#define ATPORT_LAST 254 /* 254 is only legal on localtalk */
|
||||
#define ATADDR_ANYNET (__u16)0
|
||||
#define ATADDR_ANYNODE (__u8)0
|
||||
#define ATADDR_ANYPORT (__u8)0
|
||||
#define ATADDR_BCAST (__u8)255
|
||||
#define DDP_MAXSZ 587
|
||||
#define DDP_MAXHOPS 15 /* 4 bits of hop counter */
|
||||
|
||||
#define SIOCATALKDIFADDR (SIOCPROTOPRIVATE + 0)
|
||||
|
||||
struct atalk_addr {
|
||||
__be16 s_net;
|
||||
__u8 s_node;
|
||||
};
|
||||
|
||||
struct sockaddr_at {
|
||||
__kernel_sa_family_t sat_family;
|
||||
__u8 sat_port;
|
||||
struct atalk_addr sat_addr;
|
||||
char sat_zero[8];
|
||||
};
|
||||
|
||||
struct atalk_netrange {
|
||||
__u8 nr_phase;
|
||||
__be16 nr_firstnet;
|
||||
__be16 nr_lastnet;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_ATALK_H__ */
|
||||
242
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm.h
Normal file
242
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm.h
Normal file
@ -0,0 +1,242 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atm.h - general ATM declarations */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
/*
|
||||
* WARNING: User-space programs should not #include <linux/atm.h> directly.
|
||||
* Instead, #include <atm.h>
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_ATM_H
|
||||
#define _LINUX_ATM_H
|
||||
|
||||
/*
|
||||
* BEGIN_xx and END_xx markers are used for automatic generation of
|
||||
* documentation. Do not change them.
|
||||
*/
|
||||
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atmsap.h>
|
||||
#include <linux/atmioc.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
|
||||
/* general ATM constants */
|
||||
#define ATM_CELL_SIZE 53 /* ATM cell size incl. header */
|
||||
#define ATM_CELL_PAYLOAD 48 /* ATM payload size */
|
||||
#define ATM_AAL0_SDU 52 /* AAL0 SDU size */
|
||||
#define ATM_MAX_AAL34_PDU 65535 /* maximum AAL3/4 PDU payload */
|
||||
#define ATM_AAL5_TRAILER 8 /* AAL5 trailer size */
|
||||
#define ATM_MAX_AAL5_PDU 65535 /* maximum AAL5 PDU payload */
|
||||
#define ATM_MAX_CDV 9999 /* maximum (default) CDV */
|
||||
#define ATM_NOT_RSV_VCI 32 /* first non-reserved VCI value */
|
||||
|
||||
#define ATM_MAX_VPI 255 /* maximum VPI at the UNI */
|
||||
#define ATM_MAX_VPI_NNI 4096 /* maximum VPI at the NNI */
|
||||
#define ATM_MAX_VCI 65535 /* maximum VCI */
|
||||
|
||||
|
||||
/* "protcol" values for the socket system call */
|
||||
#define ATM_NO_AAL 0 /* AAL not specified */
|
||||
#define ATM_AAL0 13 /* "raw" ATM cells */
|
||||
#define ATM_AAL1 1 /* AAL1 (CBR) */
|
||||
#define ATM_AAL2 2 /* AAL2 (VBR) */
|
||||
#define ATM_AAL34 3 /* AAL3/4 (data) */
|
||||
#define ATM_AAL5 5 /* AAL5 (data) */
|
||||
|
||||
/*
|
||||
* socket option name coding functions
|
||||
*
|
||||
* Note that __SO_ENCODE and __SO_LEVEL are somewhat a hack since the
|
||||
* << 22 only reserves 9 bits for the level. On some architectures
|
||||
* SOL_SOCKET is 0xFFFF, so that's a bit of a problem
|
||||
*/
|
||||
|
||||
#define __SO_ENCODE(l,n,t) ((((l) & 0x1FF) << 22) | ((n) << 16) | \
|
||||
sizeof(t))
|
||||
#define __SO_LEVEL_MATCH(c,m) (((c) >> 22) == ((m) & 0x1FF))
|
||||
#define __SO_NUMBER(c) (((c) >> 16) & 0x3f)
|
||||
#define __SO_SIZE(c) ((c) & 0x3fff)
|
||||
|
||||
/*
|
||||
* ATM layer
|
||||
*/
|
||||
|
||||
#define SO_SETCLP __SO_ENCODE(SOL_ATM,0,int)
|
||||
/* set CLP bit value - TODO */
|
||||
#define SO_CIRANGE __SO_ENCODE(SOL_ATM,1,struct atm_cirange)
|
||||
/* connection identifier range; socket must be
|
||||
bound or connected */
|
||||
#define SO_ATMQOS __SO_ENCODE(SOL_ATM,2,struct atm_qos)
|
||||
/* Quality of Service setting */
|
||||
#define SO_ATMSAP __SO_ENCODE(SOL_ATM,3,struct atm_sap)
|
||||
/* Service Access Point */
|
||||
#define SO_ATMPVC __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
|
||||
/* "PVC" address (also for SVCs); get only */
|
||||
#define SO_MULTIPOINT __SO_ENCODE(SOL_ATM, 5, int)
|
||||
/* make this vc a p2mp */
|
||||
|
||||
|
||||
/*
|
||||
* Note @@@: since the socket layers don't really distinguish the control and
|
||||
* the data plane but generally seems to be data plane-centric, any layer is
|
||||
* about equally wrong for the SAP. If you have a better idea about this,
|
||||
* please speak up ...
|
||||
*/
|
||||
|
||||
|
||||
/* ATM cell header (for AAL0) */
|
||||
|
||||
/* BEGIN_CH */
|
||||
#define ATM_HDR_GFC_MASK 0xf0000000
|
||||
#define ATM_HDR_GFC_SHIFT 28
|
||||
#define ATM_HDR_VPI_MASK 0x0ff00000
|
||||
#define ATM_HDR_VPI_SHIFT 20
|
||||
#define ATM_HDR_VCI_MASK 0x000ffff0
|
||||
#define ATM_HDR_VCI_SHIFT 4
|
||||
#define ATM_HDR_PTI_MASK 0x0000000e
|
||||
#define ATM_HDR_PTI_SHIFT 1
|
||||
#define ATM_HDR_CLP 0x00000001
|
||||
/* END_CH */
|
||||
|
||||
|
||||
/* PTI codings */
|
||||
|
||||
/* BEGIN_PTI */
|
||||
#define ATM_PTI_US0 0 /* user data cell, congestion not exp, SDU-type 0 */
|
||||
#define ATM_PTI_US1 1 /* user data cell, congestion not exp, SDU-type 1 */
|
||||
#define ATM_PTI_UCES0 2 /* user data cell, cong. experienced, SDU-type 0 */
|
||||
#define ATM_PTI_UCES1 3 /* user data cell, cong. experienced, SDU-type 1 */
|
||||
#define ATM_PTI_SEGF5 4 /* segment OAM F5 flow related cell */
|
||||
#define ATM_PTI_E2EF5 5 /* end-to-end OAM F5 flow related cell */
|
||||
#define ATM_PTI_RSV_RM 6 /* reserved for traffic control/resource mgmt */
|
||||
#define ATM_PTI_RSV 7 /* reserved */
|
||||
/* END_PTI */
|
||||
|
||||
|
||||
/*
|
||||
* The following items should stay in linux/atm.h, which should be linked to
|
||||
* netatm/atm.h
|
||||
*/
|
||||
|
||||
/* Traffic description */
|
||||
|
||||
#define ATM_NONE 0 /* no traffic */
|
||||
#define ATM_UBR 1
|
||||
#define ATM_CBR 2
|
||||
#define ATM_VBR 3
|
||||
#define ATM_ABR 4
|
||||
#define ATM_ANYCLASS 5 /* compatible with everything */
|
||||
|
||||
#define ATM_MAX_PCR -1 /* maximum available PCR */
|
||||
|
||||
struct atm_trafprm {
|
||||
unsigned char traffic_class; /* traffic class (ATM_UBR, ...) */
|
||||
int max_pcr; /* maximum PCR in cells per second */
|
||||
int pcr; /* desired PCR in cells per second */
|
||||
int min_pcr; /* minimum PCR in cells per second */
|
||||
int max_cdv; /* maximum CDV in microseconds */
|
||||
int max_sdu; /* maximum SDU in bytes */
|
||||
/* extra params for ABR */
|
||||
unsigned int icr; /* Initial Cell Rate (24-bit) */
|
||||
unsigned int tbe; /* Transient Buffer Exposure (24-bit) */
|
||||
unsigned int frtt : 24; /* Fixed Round Trip Time (24-bit) */
|
||||
unsigned int rif : 4; /* Rate Increment Factor (4-bit) */
|
||||
unsigned int rdf : 4; /* Rate Decrease Factor (4-bit) */
|
||||
unsigned int nrm_pres :1; /* nrm present bit */
|
||||
unsigned int trm_pres :1; /* rm present bit */
|
||||
unsigned int adtf_pres :1; /* adtf present bit */
|
||||
unsigned int cdf_pres :1; /* cdf present bit*/
|
||||
unsigned int nrm :3; /* Max # of Cells for each forward RM cell (3-bit) */
|
||||
unsigned int trm :3; /* Time between forward RM cells (3-bit) */
|
||||
unsigned int adtf :10; /* ACR Decrease Time Factor (10-bit) */
|
||||
unsigned int cdf :3; /* Cutoff Decrease Factor (3-bit) */
|
||||
unsigned int spare :9; /* spare bits */
|
||||
};
|
||||
|
||||
struct atm_qos {
|
||||
struct atm_trafprm txtp; /* parameters in TX direction */
|
||||
struct atm_trafprm rxtp __ATM_API_ALIGN;
|
||||
/* parameters in RX direction */
|
||||
unsigned char aal __ATM_API_ALIGN;
|
||||
};
|
||||
|
||||
/* PVC addressing */
|
||||
|
||||
#define ATM_ITF_ANY -1 /* "magic" PVC address values */
|
||||
#define ATM_VPI_ANY -1
|
||||
#define ATM_VCI_ANY -1
|
||||
#define ATM_VPI_UNSPEC -2
|
||||
#define ATM_VCI_UNSPEC -2
|
||||
|
||||
|
||||
struct sockaddr_atmpvc {
|
||||
unsigned short sap_family; /* address family, AF_ATMPVC */
|
||||
struct { /* PVC address */
|
||||
short itf; /* ATM interface */
|
||||
short vpi; /* VPI (only 8 bits at UNI) */
|
||||
int vci; /* VCI (only 16 bits at UNI) */
|
||||
} sap_addr __ATM_API_ALIGN; /* PVC address */
|
||||
};
|
||||
|
||||
/* SVC addressing */
|
||||
|
||||
#define ATM_ESA_LEN 20 /* ATM End System Address length */
|
||||
#define ATM_E164_LEN 12 /* maximum E.164 number length */
|
||||
|
||||
#define ATM_AFI_DCC 0x39 /* DCC ATM Format */
|
||||
#define ATM_AFI_ICD 0x47 /* ICD ATM Format */
|
||||
#define ATM_AFI_E164 0x45 /* E.164 ATM Format */
|
||||
#define ATM_AFI_LOCAL 0x49 /* Local ATM Format */
|
||||
|
||||
#define ATM_AFI_DCC_GROUP 0xBD /* DCC ATM Group Format */
|
||||
#define ATM_AFI_ICD_GROUP 0xC5 /* ICD ATM Group Format */
|
||||
#define ATM_AFI_E164_GROUP 0xC3 /* E.164 ATM Group Format */
|
||||
#define ATM_AFI_LOCAL_GROUP 0xC7 /* Local ATM Group Format */
|
||||
|
||||
#define ATM_LIJ_NONE 0 /* no leaf-initiated join */
|
||||
#define ATM_LIJ 1 /* request joining */
|
||||
#define ATM_LIJ_RPJ 2 /* set to root-prompted join */
|
||||
#define ATM_LIJ_NJ 3 /* set to network join */
|
||||
|
||||
|
||||
struct sockaddr_atmsvc {
|
||||
unsigned short sas_family; /* address family, AF_ATMSVC */
|
||||
struct { /* SVC address */
|
||||
unsigned char prv[ATM_ESA_LEN];/* private ATM address */
|
||||
char pub[ATM_E164_LEN+1]; /* public address (E.164) */
|
||||
/* unused addresses must be bzero'ed */
|
||||
char lij_type; /* role in LIJ call; one of ATM_LIJ* */
|
||||
__u32 lij_id; /* LIJ call identifier */
|
||||
} sas_addr __ATM_API_ALIGN; /* SVC address */
|
||||
};
|
||||
|
||||
|
||||
static __inline__ int atmsvc_addr_in_use(struct sockaddr_atmsvc addr)
|
||||
{
|
||||
return *addr.sas_addr.prv || *addr.sas_addr.pub;
|
||||
}
|
||||
|
||||
|
||||
static __inline__ int atmpvc_addr_in_use(struct sockaddr_atmpvc addr)
|
||||
{
|
||||
return addr.sap_addr.itf || addr.sap_addr.vpi || addr.sap_addr.vci;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Some stuff for linux/sockios.h
|
||||
*/
|
||||
|
||||
struct atmif_sioc {
|
||||
int number;
|
||||
int length;
|
||||
void *arg;
|
||||
};
|
||||
|
||||
|
||||
typedef unsigned short atm_backend_t;
|
||||
#endif /* _LINUX_ATM_H */
|
||||
24
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_eni.h
Normal file
24
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_eni.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atm_eni.h - Driver-specific declarations of the ENI driver (for use by
|
||||
driver-specific utilities) */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef LINUX_ATM_ENI_H
|
||||
#define LINUX_ATM_ENI_H
|
||||
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
||||
struct eni_multipliers {
|
||||
int tx,rx; /* values are in percent and must be > 100 */
|
||||
};
|
||||
|
||||
|
||||
#define ENI_MEMDUMP _IOW('a',ATMIOC_SARPRV,struct atmif_sioc)
|
||||
/* printk memory map */
|
||||
#define ENI_SETMULT _IOW('a',ATMIOC_SARPRV+7,struct atmif_sioc)
|
||||
/* set buffer multipliers */
|
||||
|
||||
#endif
|
||||
21
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_he.h
Normal file
21
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_he.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atm_he.h */
|
||||
|
||||
#ifndef LINUX_ATM_HE_H
|
||||
#define LINUX_ATM_HE_H
|
||||
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
#define HE_GET_REG _IOW('a', ATMIOC_SARPRV, struct atmif_sioc)
|
||||
|
||||
#define HE_REGTYPE_PCI 1
|
||||
#define HE_REGTYPE_RCM 2
|
||||
#define HE_REGTYPE_TCM 3
|
||||
#define HE_REGTYPE_MBOX 4
|
||||
|
||||
struct he_ioctl_reg {
|
||||
unsigned addr, val;
|
||||
char type;
|
||||
};
|
||||
|
||||
#endif /* LINUX_ATM_HE_H */
|
||||
@ -0,0 +1,29 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atm_idt77105.h - Driver-specific declarations of the IDT77105 driver (for
|
||||
* use by driver-specific utilities) */
|
||||
|
||||
/* Written 1999 by Greg Banks <gnb@linuxfan.com>. Copied from atm_suni.h. */
|
||||
|
||||
|
||||
#ifndef LINUX_ATM_IDT77105_H
|
||||
#define LINUX_ATM_IDT77105_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/atmioc.h>
|
||||
#include <linux/atmdev.h>
|
||||
|
||||
/*
|
||||
* Structure for IDT77105_GETSTAT and IDT77105_GETSTATZ ioctls.
|
||||
* Pointed to by `arg' in atmif_sioc.
|
||||
*/
|
||||
struct idt77105_stats {
|
||||
__u32 symbol_errors; /* wire symbol errors */
|
||||
__u32 tx_cells; /* cells transmitted */
|
||||
__u32 rx_cells; /* cells received */
|
||||
__u32 rx_hec_errors; /* Header Error Check errors on receive */
|
||||
};
|
||||
|
||||
#define IDT77105_GETSTAT _IOW('a',ATMIOC_PHYPRV+2,struct atmif_sioc) /* get stats */
|
||||
#define IDT77105_GETSTATZ _IOW('a',ATMIOC_PHYPRV+3,struct atmif_sioc) /* get stats and zero */
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,54 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/******************************************************************************
|
||||
*
|
||||
* atm_nicstar.h
|
||||
*
|
||||
* Driver-specific declarations for use by NICSTAR driver specific utils.
|
||||
*
|
||||
* Author: Rui Prior
|
||||
*
|
||||
* (C) INESC 1998
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef LINUX_ATM_NICSTAR_H
|
||||
#define LINUX_ATM_NICSTAR_H
|
||||
|
||||
/* Note: non-kernel programs including this file must also include
|
||||
* sys/types.h for struct timeval
|
||||
*/
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
#define NS_GETPSTAT _IOWR('a',ATMIOC_SARPRV+1,struct atmif_sioc)
|
||||
/* get pool statistics */
|
||||
#define NS_SETBUFLEV _IOW('a',ATMIOC_SARPRV+2,struct atmif_sioc)
|
||||
/* set buffer level markers */
|
||||
#define NS_ADJBUFLEV _IO('a',ATMIOC_SARPRV+3)
|
||||
/* adjust buffer level */
|
||||
|
||||
typedef struct buf_nr
|
||||
{
|
||||
unsigned min;
|
||||
unsigned init;
|
||||
unsigned max;
|
||||
}buf_nr;
|
||||
|
||||
|
||||
typedef struct pool_levels
|
||||
{
|
||||
int buftype;
|
||||
int count; /* (At least for now) only used in NS_GETPSTAT */
|
||||
buf_nr level;
|
||||
} pool_levels;
|
||||
|
||||
/* type must be one of the following: */
|
||||
#define NS_BUFTYPE_SMALL 1
|
||||
#define NS_BUFTYPE_LARGE 2
|
||||
#define NS_BUFTYPE_HUGE 3
|
||||
#define NS_BUFTYPE_IOVEC 4
|
||||
|
||||
|
||||
#endif /* LINUX_ATM_NICSTAR_H */
|
||||
62
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_tcp.h
Normal file
62
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_tcp.h
Normal file
@ -0,0 +1,62 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atm_tcp.h - Driver-specific declarations of the ATMTCP driver (for use by
|
||||
driver-specific utilities) */
|
||||
|
||||
/* Written 1997-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef LINUX_ATM_TCP_H
|
||||
#define LINUX_ATM_TCP_H
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/atmioc.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
|
||||
/*
|
||||
* All values in struct atmtcp_hdr are in network byte order
|
||||
*/
|
||||
|
||||
struct atmtcp_hdr {
|
||||
__u16 vpi;
|
||||
__u16 vci;
|
||||
__u32 length; /* ... of data part */
|
||||
};
|
||||
|
||||
/*
|
||||
* All values in struct atmtcp_command are in host byte order
|
||||
*/
|
||||
|
||||
#define ATMTCP_HDR_MAGIC (~0) /* this length indicates a command */
|
||||
#define ATMTCP_CTRL_OPEN 1 /* request/reply */
|
||||
#define ATMTCP_CTRL_CLOSE 2 /* request/reply */
|
||||
|
||||
struct atmtcp_control {
|
||||
struct atmtcp_hdr hdr; /* must be first */
|
||||
int type; /* message type; both directions */
|
||||
atm_kptr_t vcc; /* both directions */
|
||||
struct sockaddr_atmpvc addr; /* suggested value from kernel */
|
||||
struct atm_qos qos; /* both directions */
|
||||
int result; /* to kernel only */
|
||||
} __ATM_API_ALIGN;
|
||||
|
||||
/*
|
||||
* Field usage:
|
||||
* Messge type dir. hdr.v?i type addr qos vcc result
|
||||
* ----------- ---- ------- ---- ---- --- --- ------
|
||||
* OPEN K->D Y Y Y Y Y 0
|
||||
* OPEN D->K - Y Y Y Y Y
|
||||
* CLOSE K->D - - Y - Y 0
|
||||
* CLOSE D->K - - - - Y Y
|
||||
*/
|
||||
|
||||
#define SIOCSIFATMTCP _IO('a',ATMIOC_ITF) /* set ATMTCP mode */
|
||||
#define ATMTCP_CREATE _IO('a',ATMIOC_ITF+14) /* create persistent ATMTCP
|
||||
interface */
|
||||
#define ATMTCP_REMOVE _IO('a',ATMIOC_ITF+15) /* destroy persistent ATMTCP
|
||||
interface */
|
||||
|
||||
|
||||
|
||||
#endif /* LINUX_ATM_TCP_H */
|
||||
47
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_zatm.h
Normal file
47
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atm_zatm.h
Normal file
@ -0,0 +1,47 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atm_zatm.h - Driver-specific declarations of the ZATM driver (for use by
|
||||
driver-specific utilities) */
|
||||
|
||||
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef LINUX_ATM_ZATM_H
|
||||
#define LINUX_ATM_ZATM_H
|
||||
|
||||
/*
|
||||
* Note: non-kernel programs including this file must also include
|
||||
* sys/types.h for struct timeval
|
||||
*/
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
#define ZATM_GETPOOL _IOW('a',ATMIOC_SARPRV+1,struct atmif_sioc)
|
||||
/* get pool statistics */
|
||||
#define ZATM_GETPOOLZ _IOW('a',ATMIOC_SARPRV+2,struct atmif_sioc)
|
||||
/* get statistics and zero */
|
||||
#define ZATM_SETPOOL _IOW('a',ATMIOC_SARPRV+3,struct atmif_sioc)
|
||||
/* set pool parameters */
|
||||
|
||||
struct zatm_pool_info {
|
||||
int ref_count; /* free buffer pool usage counters */
|
||||
int low_water,high_water; /* refill parameters */
|
||||
int rqa_count,rqu_count; /* queue condition counters */
|
||||
int offset,next_off; /* alignment optimizations: offset */
|
||||
int next_cnt,next_thres; /* repetition counter and threshold */
|
||||
};
|
||||
|
||||
struct zatm_pool_req {
|
||||
int pool_num; /* pool number */
|
||||
struct zatm_pool_info info; /* actual information */
|
||||
};
|
||||
|
||||
#define ZATM_OAM_POOL 0 /* free buffer pool for OAM cells */
|
||||
#define ZATM_AAL0_POOL 1 /* free buffer pool for AAL0 cells */
|
||||
#define ZATM_AAL5_POOL_BASE 2 /* first AAL5 free buffer pool */
|
||||
#define ZATM_LAST_POOL ZATM_AAL5_POOL_BASE+10 /* max. 64 kB */
|
||||
|
||||
#define ZATM_TIMER_HISTORY_SIZE 16 /* number of timer adjustments to
|
||||
record; must be 2^n */
|
||||
|
||||
#endif
|
||||
30
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmapi.h
Normal file
30
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmapi.h
Normal file
@ -0,0 +1,30 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmapi.h - ATM API user space/kernel compatibility */
|
||||
|
||||
/* Written 1999,2000 by Werner Almesberger, EPFL ICA */
|
||||
|
||||
|
||||
#ifndef _LINUX_ATMAPI_H
|
||||
#define _LINUX_ATMAPI_H
|
||||
|
||||
#if defined(__sparc__) || defined(__ia64__)
|
||||
/* such alignment is not required on 32 bit sparcs, but we can't
|
||||
figure that we are on a sparc64 while compiling user-space programs. */
|
||||
#define __ATM_API_ALIGN __attribute__((aligned(8)))
|
||||
#else
|
||||
#define __ATM_API_ALIGN
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Opaque type for kernel pointers. Note that _ is never accessed. We need
|
||||
* the struct in order hide the array, so that we can make simple assignments
|
||||
* instead of being forced to use memcpy. It also improves error reporting for
|
||||
* code that still assumes that we're passing unsigned longs.
|
||||
*
|
||||
* Convention: NULL pointers are passed as a field of all zeroes.
|
||||
*/
|
||||
|
||||
typedef struct { unsigned char _[8]; } __ATM_API_ALIGN atm_kptr_t;
|
||||
|
||||
#endif
|
||||
42
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmarp.h
Normal file
42
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmarp.h
Normal file
@ -0,0 +1,42 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmarp.h - ATM ARP protocol and kernel-demon interface definitions */
|
||||
|
||||
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef _LINUX_ATMARP_H
|
||||
#define _LINUX_ATMARP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
||||
#define ATMARP_RETRY_DELAY 30 /* request next resolution or forget
|
||||
NAK after 30 sec - should go into
|
||||
atmclip.h */
|
||||
#define ATMARP_MAX_UNRES_PACKETS 5 /* queue that many packets while
|
||||
waiting for the resolver */
|
||||
|
||||
|
||||
#define ATMARPD_CTRL _IO('a',ATMIOC_CLIP+1) /* become atmarpd ctrl sock */
|
||||
#define ATMARP_MKIP _IO('a',ATMIOC_CLIP+2) /* attach socket to IP */
|
||||
#define ATMARP_SETENTRY _IO('a',ATMIOC_CLIP+3) /* fill or hide ARP entry */
|
||||
#define ATMARP_ENCAP _IO('a',ATMIOC_CLIP+5) /* change encapsulation */
|
||||
|
||||
|
||||
enum atmarp_ctrl_type {
|
||||
act_invalid, /* catch uninitialized structures */
|
||||
act_need, /* need address resolution */
|
||||
act_up, /* interface is coming up */
|
||||
act_down, /* interface is going down */
|
||||
act_change /* interface configuration has changed */
|
||||
};
|
||||
|
||||
struct atmarp_ctrl {
|
||||
enum atmarp_ctrl_type type; /* message type */
|
||||
int itf_num;/* interface number (if present) */
|
||||
__be32 ip; /* IP address (act_need only) */
|
||||
};
|
||||
|
||||
#endif
|
||||
118
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmbr2684.h
Normal file
118
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmbr2684.h
Normal file
@ -0,0 +1,118 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_ATMBR2684_H
|
||||
#define _LINUX_ATMBR2684_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/if.h> /* For IFNAMSIZ */
|
||||
|
||||
/*
|
||||
* Type of media we're bridging (ethernet, token ring, etc) Currently only
|
||||
* ethernet is supported
|
||||
*/
|
||||
#define BR2684_MEDIA_ETHERNET (0) /* 802.3 */
|
||||
#define BR2684_MEDIA_802_4 (1) /* 802.4 */
|
||||
#define BR2684_MEDIA_TR (2) /* 802.5 - token ring */
|
||||
#define BR2684_MEDIA_FDDI (3)
|
||||
#define BR2684_MEDIA_802_6 (4) /* 802.6 */
|
||||
|
||||
/* used only at device creation: */
|
||||
#define BR2684_FLAG_ROUTED (1<<16) /* payload is routed, not bridged */
|
||||
|
||||
/*
|
||||
* Is there FCS inbound on this VC? This currently isn't supported.
|
||||
*/
|
||||
#define BR2684_FCSIN_NO (0)
|
||||
#define BR2684_FCSIN_IGNORE (1)
|
||||
#define BR2684_FCSIN_VERIFY (2)
|
||||
|
||||
/*
|
||||
* Is there FCS outbound on this VC? This currently isn't supported.
|
||||
*/
|
||||
#define BR2684_FCSOUT_NO (0)
|
||||
#define BR2684_FCSOUT_SENDZERO (1)
|
||||
#define BR2684_FCSOUT_GENERATE (2)
|
||||
|
||||
/*
|
||||
* Does this VC include LLC encapsulation?
|
||||
*/
|
||||
#define BR2684_ENCAPS_VC (0) /* VC-mux */
|
||||
#define BR2684_ENCAPS_LLC (1)
|
||||
#define BR2684_ENCAPS_AUTODETECT (2) /* Unsuported */
|
||||
|
||||
/*
|
||||
* Is this VC bridged or routed?
|
||||
*/
|
||||
|
||||
#define BR2684_PAYLOAD_ROUTED (0)
|
||||
#define BR2684_PAYLOAD_BRIDGED (1)
|
||||
|
||||
/*
|
||||
* This is for the ATM_NEWBACKENDIF call - these are like socket families:
|
||||
* the first element of the structure is the backend number and the rest
|
||||
* is per-backend specific
|
||||
*/
|
||||
struct atm_newif_br2684 {
|
||||
atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */
|
||||
int media; /* BR2684_MEDIA_*, flags in upper bits */
|
||||
char ifname[IFNAMSIZ];
|
||||
int mtu;
|
||||
};
|
||||
|
||||
/*
|
||||
* This structure is used to specify a br2684 interface - either by a
|
||||
* positive integer (returned by ATM_NEWBACKENDIF) or the interfaces name
|
||||
*/
|
||||
#define BR2684_FIND_BYNOTHING (0)
|
||||
#define BR2684_FIND_BYNUM (1)
|
||||
#define BR2684_FIND_BYIFNAME (2)
|
||||
struct br2684_if_spec {
|
||||
int method; /* BR2684_FIND_* */
|
||||
union {
|
||||
char ifname[IFNAMSIZ];
|
||||
int devnum;
|
||||
} spec;
|
||||
};
|
||||
|
||||
/*
|
||||
* This is for the ATM_SETBACKEND call - these are like socket families:
|
||||
* the first element of the structure is the backend number and the rest
|
||||
* is per-backend specific
|
||||
*/
|
||||
struct atm_backend_br2684 {
|
||||
atm_backend_t backend_num; /* ATM_BACKEND_BR2684 */
|
||||
struct br2684_if_spec ifspec;
|
||||
int fcs_in; /* BR2684_FCSIN_* */
|
||||
int fcs_out; /* BR2684_FCSOUT_* */
|
||||
int fcs_auto; /* 1: fcs_{in,out} disabled if no FCS rx'ed */
|
||||
int encaps; /* BR2684_ENCAPS_* */
|
||||
int has_vpiid; /* 1: use vpn_id - Unsupported */
|
||||
__u8 vpn_id[7];
|
||||
int send_padding; /* unsupported */
|
||||
int min_size; /* we will pad smaller packets than this */
|
||||
};
|
||||
|
||||
/*
|
||||
* The BR2684_SETFILT ioctl is an experimental mechanism for folks
|
||||
* terminating a large number of IP-only vcc's. When netfilter allows
|
||||
* efficient per-if in/out filters, this support will be removed
|
||||
*/
|
||||
struct br2684_filter {
|
||||
__be32 prefix; /* network byte order */
|
||||
__be32 netmask; /* 0 = disable filter */
|
||||
};
|
||||
|
||||
struct br2684_filter_set {
|
||||
struct br2684_if_spec ifspec;
|
||||
struct br2684_filter filter;
|
||||
};
|
||||
|
||||
enum br2684_payload {
|
||||
p_routed = BR2684_PAYLOAD_ROUTED,
|
||||
p_bridged = BR2684_PAYLOAD_BRIDGED,
|
||||
};
|
||||
|
||||
#define BR2684_SETFILT _IOW( 'a', ATMIOC_BACKEND + 0, \
|
||||
struct br2684_filter_set)
|
||||
|
||||
#endif /* _LINUX_ATMBR2684_H */
|
||||
22
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmclip.h
Normal file
22
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmclip.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmclip.h - Classical IP over ATM */
|
||||
|
||||
/* Written 1995-1998 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef LINUX_ATMCLIP_H
|
||||
#define LINUX_ATMCLIP_H
|
||||
|
||||
#include <linux/sockios.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
||||
#define RFC1483LLC_LEN 8 /* LLC+OUI+PID = 8 */
|
||||
#define RFC1626_MTU 9180 /* RFC1626 default MTU */
|
||||
|
||||
#define CLIP_DEFAULT_IDLETIMER 1200 /* 20 minutes, see RFC1755 */
|
||||
#define CLIP_CHECK_INTERVAL 10 /* check every ten seconds */
|
||||
|
||||
#define SIOCMKCLIP _IO('a',ATMIOC_CLIP) /* create IP interface */
|
||||
|
||||
#endif
|
||||
216
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmdev.h
Normal file
216
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmdev.h
Normal file
@ -0,0 +1,216 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmdev.h - ATM device driver declarations and various related items */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef LINUX_ATMDEV_H
|
||||
#define LINUX_ATMDEV_H
|
||||
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
||||
#define ESI_LEN 6
|
||||
|
||||
#define ATM_OC3_PCR (155520000/270*260/8/53)
|
||||
/* OC3 link rate: 155520000 bps
|
||||
SONET overhead: /270*260 (9 section, 1 path)
|
||||
bits per cell: /8/53
|
||||
max cell rate: 353207.547 cells/sec */
|
||||
#define ATM_25_PCR ((25600000/8-8000)/54)
|
||||
/* 25 Mbps ATM cell rate (59111) */
|
||||
#define ATM_OC12_PCR (622080000/1080*1040/8/53)
|
||||
/* OC12 link rate: 622080000 bps
|
||||
SONET overhead: /1080*1040
|
||||
bits per cell: /8/53
|
||||
max cell rate: 1412830.188 cells/sec */
|
||||
#define ATM_DS3_PCR (8000*12)
|
||||
/* DS3: 12 cells in a 125 usec time slot */
|
||||
|
||||
|
||||
#define __AAL_STAT_ITEMS \
|
||||
__HANDLE_ITEM(tx); /* TX okay */ \
|
||||
__HANDLE_ITEM(tx_err); /* TX errors */ \
|
||||
__HANDLE_ITEM(rx); /* RX okay */ \
|
||||
__HANDLE_ITEM(rx_err); /* RX errors */ \
|
||||
__HANDLE_ITEM(rx_drop); /* RX out of memory */
|
||||
|
||||
struct atm_aal_stats {
|
||||
#define __HANDLE_ITEM(i) int i
|
||||
__AAL_STAT_ITEMS
|
||||
#undef __HANDLE_ITEM
|
||||
};
|
||||
|
||||
|
||||
struct atm_dev_stats {
|
||||
struct atm_aal_stats aal0;
|
||||
struct atm_aal_stats aal34;
|
||||
struct atm_aal_stats aal5;
|
||||
} __ATM_API_ALIGN;
|
||||
|
||||
|
||||
#define ATM_GETLINKRATE _IOW('a',ATMIOC_ITF+1,struct atmif_sioc)
|
||||
/* get link rate */
|
||||
#define ATM_GETNAMES _IOW('a',ATMIOC_ITF+3,struct atm_iobuf)
|
||||
/* get interface names (numbers) */
|
||||
#define ATM_GETTYPE _IOW('a',ATMIOC_ITF+4,struct atmif_sioc)
|
||||
/* get interface type name */
|
||||
#define ATM_GETESI _IOW('a',ATMIOC_ITF+5,struct atmif_sioc)
|
||||
/* get interface ESI */
|
||||
#define ATM_GETADDR _IOW('a',ATMIOC_ITF+6,struct atmif_sioc)
|
||||
/* get itf's local ATM addr. list */
|
||||
#define ATM_RSTADDR _IOW('a',ATMIOC_ITF+7,struct atmif_sioc)
|
||||
/* reset itf's ATM address list */
|
||||
#define ATM_ADDADDR _IOW('a',ATMIOC_ITF+8,struct atmif_sioc)
|
||||
/* add a local ATM address */
|
||||
#define ATM_DELADDR _IOW('a',ATMIOC_ITF+9,struct atmif_sioc)
|
||||
/* remove a local ATM address */
|
||||
#define ATM_GETCIRANGE _IOW('a',ATMIOC_ITF+10,struct atmif_sioc)
|
||||
/* get connection identifier range */
|
||||
#define ATM_SETCIRANGE _IOW('a',ATMIOC_ITF+11,struct atmif_sioc)
|
||||
/* set connection identifier range */
|
||||
#define ATM_SETESI _IOW('a',ATMIOC_ITF+12,struct atmif_sioc)
|
||||
/* set interface ESI */
|
||||
#define ATM_SETESIF _IOW('a',ATMIOC_ITF+13,struct atmif_sioc)
|
||||
/* force interface ESI */
|
||||
#define ATM_ADDLECSADDR _IOW('a', ATMIOC_ITF+14, struct atmif_sioc)
|
||||
/* register a LECS address */
|
||||
#define ATM_DELLECSADDR _IOW('a', ATMIOC_ITF+15, struct atmif_sioc)
|
||||
/* unregister a LECS address */
|
||||
#define ATM_GETLECSADDR _IOW('a', ATMIOC_ITF+16, struct atmif_sioc)
|
||||
/* retrieve LECS address(es) */
|
||||
|
||||
#define ATM_GETSTAT _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc)
|
||||
/* get AAL layer statistics */
|
||||
#define ATM_GETSTATZ _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc)
|
||||
/* get AAL layer statistics and zero */
|
||||
#define ATM_GETLOOP _IOW('a',ATMIOC_SARCOM+2,struct atmif_sioc)
|
||||
/* get loopback mode */
|
||||
#define ATM_SETLOOP _IOW('a',ATMIOC_SARCOM+3,struct atmif_sioc)
|
||||
/* set loopback mode */
|
||||
#define ATM_QUERYLOOP _IOW('a',ATMIOC_SARCOM+4,struct atmif_sioc)
|
||||
/* query supported loopback modes */
|
||||
#define ATM_SETSC _IOW('a',ATMIOC_SPECIAL+1,int)
|
||||
/* enable or disable single-copy */
|
||||
#define ATM_SETBACKEND _IOW('a',ATMIOC_SPECIAL+2,atm_backend_t)
|
||||
/* set backend handler */
|
||||
#define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
|
||||
/* use backend to make new if */
|
||||
#define ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf)
|
||||
/* add party to p2mp call */
|
||||
#ifdef CONFIG_COMPAT
|
||||
/* It actually takes struct sockaddr_atmsvc, not struct atm_iobuf */
|
||||
#define COMPAT_ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct compat_atm_iobuf)
|
||||
#endif
|
||||
#define ATM_DROPPARTY _IOW('a', ATMIOC_SPECIAL+5,int)
|
||||
/* drop party from p2mp call */
|
||||
|
||||
/*
|
||||
* These are backend handkers that can be set via the ATM_SETBACKEND call
|
||||
* above. In the future we may support dynamic loading of these - for now,
|
||||
* they're just being used to share the ATMIOC_BACKEND ioctls
|
||||
*/
|
||||
#define ATM_BACKEND_RAW 0
|
||||
#define ATM_BACKEND_PPP 1 /* PPPoATM - RFC2364 */
|
||||
#define ATM_BACKEND_BR2684 2 /* Bridged RFC1483/2684 */
|
||||
|
||||
/* for ATM_GETTYPE */
|
||||
#define ATM_ITFTYP_LEN 8 /* maximum length of interface type name */
|
||||
|
||||
/*
|
||||
* Loopback modes for ATM_{PHY,SAR}_{GET,SET}LOOP
|
||||
*/
|
||||
|
||||
/* Point of loopback CPU-->SAR-->PHY-->line--> ... */
|
||||
#define __ATM_LM_NONE 0 /* no loop back ^ ^ ^ ^ */
|
||||
#define __ATM_LM_AAL 1 /* loop back PDUs --' | | | */
|
||||
#define __ATM_LM_ATM 2 /* loop back ATM cells ---' | | */
|
||||
/* RESERVED 4 loop back on PHY side ---' */
|
||||
#define __ATM_LM_PHY 8 /* loop back bits (digital) ----' | */
|
||||
#define __ATM_LM_ANALOG 16 /* loop back the analog signal --------' */
|
||||
|
||||
/* Direction of loopback */
|
||||
#define __ATM_LM_MKLOC(n) ((n)) /* Local (i.e. loop TX to RX) */
|
||||
#define __ATM_LM_MKRMT(n) ((n) << 8) /* Remote (i.e. loop RX to TX) */
|
||||
|
||||
#define __ATM_LM_XTLOC(n) ((n) & 0xff)
|
||||
#define __ATM_LM_XTRMT(n) (((n) >> 8) & 0xff)
|
||||
|
||||
#define ATM_LM_NONE 0 /* no loopback */
|
||||
|
||||
#define ATM_LM_LOC_AAL __ATM_LM_MKLOC(__ATM_LM_AAL)
|
||||
#define ATM_LM_LOC_ATM __ATM_LM_MKLOC(__ATM_LM_ATM)
|
||||
#define ATM_LM_LOC_PHY __ATM_LM_MKLOC(__ATM_LM_PHY)
|
||||
#define ATM_LM_LOC_ANALOG __ATM_LM_MKLOC(__ATM_LM_ANALOG)
|
||||
|
||||
#define ATM_LM_RMT_AAL __ATM_LM_MKRMT(__ATM_LM_AAL)
|
||||
#define ATM_LM_RMT_ATM __ATM_LM_MKRMT(__ATM_LM_ATM)
|
||||
#define ATM_LM_RMT_PHY __ATM_LM_MKRMT(__ATM_LM_PHY)
|
||||
#define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
|
||||
|
||||
/*
|
||||
* Note: ATM_LM_LOC_* and ATM_LM_RMT_* can be combined, provided that
|
||||
* __ATM_LM_XTLOC(x) <= __ATM_LM_XTRMT(x)
|
||||
*/
|
||||
|
||||
|
||||
struct atm_iobuf {
|
||||
int length;
|
||||
void *buffer;
|
||||
};
|
||||
|
||||
/* for ATM_GETCIRANGE / ATM_SETCIRANGE */
|
||||
|
||||
#define ATM_CI_MAX -1 /* use maximum range of VPI/VCI */
|
||||
|
||||
struct atm_cirange {
|
||||
signed char vpi_bits; /* 1..8, ATM_CI_MAX (-1) for maximum */
|
||||
signed char vci_bits; /* 1..16, ATM_CI_MAX (-1) for maximum */
|
||||
};
|
||||
|
||||
/* for ATM_SETSC; actually taken from the ATM_VF number space */
|
||||
|
||||
#define ATM_SC_RX 1024 /* enable RX single-copy */
|
||||
#define ATM_SC_TX 2048 /* enable TX single-copy */
|
||||
|
||||
#define ATM_BACKLOG_DEFAULT 32 /* if we get more, we're likely to time out
|
||||
anyway */
|
||||
|
||||
/* MF: change_qos (Modify) flags */
|
||||
|
||||
#define ATM_MF_IMMED 1 /* Block until change is effective */
|
||||
#define ATM_MF_INC_RSV 2 /* Change reservation on increase */
|
||||
#define ATM_MF_INC_SHP 4 /* Change shaping on increase */
|
||||
#define ATM_MF_DEC_RSV 8 /* Change reservation on decrease */
|
||||
#define ATM_MF_DEC_SHP 16 /* Change shaping on decrease */
|
||||
#define ATM_MF_BWD 32 /* Set the backward direction parameters */
|
||||
|
||||
#define ATM_MF_SET (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV | \
|
||||
ATM_MF_DEC_SHP | ATM_MF_BWD)
|
||||
|
||||
/*
|
||||
* ATM_VS_* are used to express VC state in a human-friendly way.
|
||||
*/
|
||||
|
||||
#define ATM_VS_IDLE 0 /* VC is not used */
|
||||
#define ATM_VS_CONNECTED 1 /* VC is connected */
|
||||
#define ATM_VS_CLOSING 2 /* VC is closing */
|
||||
#define ATM_VS_LISTEN 3 /* VC is listening for incoming setups */
|
||||
#define ATM_VS_INUSE 4 /* VC is in use (registered with atmsigd) */
|
||||
#define ATM_VS_BOUND 5 /* VC is bound */
|
||||
|
||||
#define ATM_VS2TXT_MAP \
|
||||
"IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
|
||||
|
||||
#define ATM_VF2TXT_MAP \
|
||||
"ADDR", "READY", "PARTIAL", "REGIS", \
|
||||
"RELEASED", "HASQOS", "LISTEN", "META", \
|
||||
"256", "512", "1024", "2048", \
|
||||
"SESSION", "HASSAP", "BOUND", "CLOSE"
|
||||
|
||||
|
||||
|
||||
#endif /* LINUX_ATMDEV_H */
|
||||
42
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmioc.h
Normal file
42
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmioc.h
Normal file
@ -0,0 +1,42 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmioc.h - ranges for ATM-related ioctl numbers */
|
||||
|
||||
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
/*
|
||||
* See http://icawww1.epfl.ch/linux-atm/magic.html for the complete list of
|
||||
* "magic" ioctl numbers.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _LINUX_ATMIOC_H
|
||||
#define _LINUX_ATMIOC_H
|
||||
|
||||
#include <asm/ioctl.h>
|
||||
/* everybody including atmioc.h will also need _IO{,R,W,WR} */
|
||||
|
||||
#define ATMIOC_PHYCOM 0x00 /* PHY device common ioctls, globally unique */
|
||||
#define ATMIOC_PHYCOM_END 0x0f
|
||||
#define ATMIOC_PHYTYP 0x10 /* PHY dev type ioctls, unique per PHY type */
|
||||
#define ATMIOC_PHYTYP_END 0x2f
|
||||
#define ATMIOC_PHYPRV 0x30 /* PHY dev private ioctls, unique per driver */
|
||||
#define ATMIOC_PHYPRV_END 0x4f
|
||||
#define ATMIOC_SARCOM 0x50 /* SAR device common ioctls, globally unique */
|
||||
#define ATMIOC_SARCOM_END 0x50
|
||||
#define ATMIOC_SARPRV 0x60 /* SAR dev private ioctls, unique per driver */
|
||||
#define ATMIOC_SARPRV_END 0x7f
|
||||
#define ATMIOC_ITF 0x80 /* Interface ioctls, globally unique */
|
||||
#define ATMIOC_ITF_END 0x8f
|
||||
#define ATMIOC_BACKEND 0x90 /* ATM generic backend ioctls, u. per backend */
|
||||
#define ATMIOC_BACKEND_END 0xaf
|
||||
/* 0xb0-0xbf: Reserved for future use */
|
||||
#define ATMIOC_AREQUIPA 0xc0 /* Application requested IP over ATM, glob. u. */
|
||||
#define ATMIOC_LANE 0xd0 /* LAN Emulation, globally unique */
|
||||
#define ATMIOC_MPOA 0xd8 /* MPOA, globally unique */
|
||||
#define ATMIOC_CLIP 0xe0 /* Classical IP over ATM control, globally u. */
|
||||
#define ATMIOC_CLIP_END 0xef
|
||||
#define ATMIOC_SPECIAL 0xf0 /* Special-purpose controls, globally unique */
|
||||
#define ATMIOC_SPECIAL_END 0xff
|
||||
|
||||
#endif
|
||||
92
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmlec.h
Normal file
92
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmlec.h
Normal file
@ -0,0 +1,92 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* ATM Lan Emulation Daemon driver interface
|
||||
*
|
||||
* Marko Kiiskila <mkiiskila@yahoo.com>
|
||||
*/
|
||||
|
||||
#ifndef _ATMLEC_H_
|
||||
#define _ATMLEC_H_
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atmioc.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/* ATM lec daemon control socket */
|
||||
#define ATMLEC_CTRL _IO('a', ATMIOC_LANE)
|
||||
#define ATMLEC_DATA _IO('a', ATMIOC_LANE+1)
|
||||
#define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2)
|
||||
|
||||
/* Maximum number of LEC interfaces (tweakable) */
|
||||
#define MAX_LEC_ITF 48
|
||||
|
||||
typedef enum {
|
||||
l_set_mac_addr,
|
||||
l_del_mac_addr,
|
||||
l_svc_setup,
|
||||
l_addr_delete,
|
||||
l_topology_change,
|
||||
l_flush_complete,
|
||||
l_arp_update,
|
||||
l_narp_req, /* LANE2 mandates the use of this */
|
||||
l_config,
|
||||
l_flush_tran_id,
|
||||
l_set_lecid,
|
||||
l_arp_xmt,
|
||||
l_rdesc_arp_xmt,
|
||||
l_associate_req,
|
||||
l_should_bridge /* should we bridge this MAC? */
|
||||
} atmlec_msg_type;
|
||||
|
||||
#define ATMLEC_MSG_TYPE_MAX l_should_bridge
|
||||
|
||||
struct atmlec_config_msg {
|
||||
unsigned int maximum_unknown_frame_count;
|
||||
unsigned int max_unknown_frame_time;
|
||||
unsigned short max_retry_count;
|
||||
unsigned int aging_time;
|
||||
unsigned int forward_delay_time;
|
||||
unsigned int arp_response_time;
|
||||
unsigned int flush_timeout;
|
||||
unsigned int path_switching_delay;
|
||||
unsigned int lane_version; /* LANE2: 1 for LANEv1, 2 for LANEv2 */
|
||||
int mtu;
|
||||
int is_proxy;
|
||||
};
|
||||
|
||||
struct atmlec_msg {
|
||||
atmlec_msg_type type;
|
||||
int sizeoftlvs; /* LANE2: if != 0, tlvs follow */
|
||||
union {
|
||||
struct {
|
||||
unsigned char mac_addr[ETH_ALEN];
|
||||
unsigned char atm_addr[ATM_ESA_LEN];
|
||||
unsigned int flag; /*
|
||||
* Topology_change flag,
|
||||
* remoteflag, permanent flag,
|
||||
* lecid, transaction id
|
||||
*/
|
||||
unsigned int targetless_le_arp; /* LANE2 */
|
||||
unsigned int no_source_le_narp; /* LANE2 */
|
||||
} normal;
|
||||
struct atmlec_config_msg config;
|
||||
struct {
|
||||
__u16 lec_id; /* requestor lec_id */
|
||||
__u32 tran_id; /* transaction id */
|
||||
unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */
|
||||
unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */
|
||||
} proxy; /*
|
||||
* For mapping LE_ARP requests to responses. Filled by
|
||||
* zeppelin, returned by kernel. Used only when proxying
|
||||
*/
|
||||
} content;
|
||||
} __ATM_API_ALIGN;
|
||||
|
||||
struct atmlec_ioc {
|
||||
int dev_num;
|
||||
unsigned char atm_addr[ATM_ESA_LEN];
|
||||
unsigned char receive; /* 1= receive vcc, 0 = send vcc */
|
||||
};
|
||||
#endif /* _ATMLEC_H_ */
|
||||
127
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmmpc.h
Normal file
127
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmmpc.h
Normal file
@ -0,0 +1,127 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _ATMMPC_H_
|
||||
#define _ATMMPC_H_
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atmioc.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define ATMMPC_CTRL _IO('a', ATMIOC_MPOA)
|
||||
#define ATMMPC_DATA _IO('a', ATMIOC_MPOA+1)
|
||||
|
||||
#define MPC_SOCKET_INGRESS 1
|
||||
#define MPC_SOCKET_EGRESS 2
|
||||
|
||||
struct atmmpc_ioc {
|
||||
int dev_num;
|
||||
__be32 ipaddr; /* the IP address of the shortcut */
|
||||
int type; /* ingress or egress */
|
||||
};
|
||||
|
||||
typedef struct in_ctrl_info {
|
||||
__u8 Last_NHRP_CIE_code;
|
||||
__u8 Last_Q2931_cause_value;
|
||||
__u8 eg_MPC_ATM_addr[ATM_ESA_LEN];
|
||||
__be32 tag;
|
||||
__be32 in_dst_ip; /* IP address this ingress MPC sends packets to */
|
||||
__u16 holding_time;
|
||||
__u32 request_id;
|
||||
} in_ctrl_info;
|
||||
|
||||
typedef struct eg_ctrl_info {
|
||||
__u8 DLL_header[256];
|
||||
__u8 DH_length;
|
||||
__be32 cache_id;
|
||||
__be32 tag;
|
||||
__be32 mps_ip;
|
||||
__be32 eg_dst_ip; /* IP address to which ingress MPC sends packets */
|
||||
__u8 in_MPC_data_ATM_addr[ATM_ESA_LEN];
|
||||
__u16 holding_time;
|
||||
} eg_ctrl_info;
|
||||
|
||||
struct mpc_parameters {
|
||||
__u16 mpc_p1; /* Shortcut-Setup Frame Count */
|
||||
__u16 mpc_p2; /* Shortcut-Setup Frame Time */
|
||||
__u8 mpc_p3[8]; /* Flow-detection Protocols */
|
||||
__u16 mpc_p4; /* MPC Initial Retry Time */
|
||||
__u16 mpc_p5; /* MPC Retry Time Maximum */
|
||||
__u16 mpc_p6; /* Hold Down Time */
|
||||
} ;
|
||||
|
||||
struct k_message {
|
||||
__u16 type;
|
||||
__be32 ip_mask;
|
||||
__u8 MPS_ctrl[ATM_ESA_LEN];
|
||||
union {
|
||||
in_ctrl_info in_info;
|
||||
eg_ctrl_info eg_info;
|
||||
struct mpc_parameters params;
|
||||
} content;
|
||||
struct atm_qos qos;
|
||||
} __ATM_API_ALIGN;
|
||||
|
||||
struct llc_snap_hdr {
|
||||
/* RFC 1483 LLC/SNAP encapsulation for routed IP PDUs */
|
||||
__u8 dsap; /* Destination Service Access Point (0xAA) */
|
||||
__u8 ssap; /* Source Service Access Point (0xAA) */
|
||||
__u8 ui; /* Unnumbered Information (0x03) */
|
||||
__u8 org[3]; /* Organizational identification (0x000000) */
|
||||
__u8 type[2]; /* Ether type (for IP) (0x0800) */
|
||||
};
|
||||
|
||||
/* TLVs this MPC recognizes */
|
||||
#define TLV_MPOA_DEVICE_TYPE 0x00a03e2a
|
||||
|
||||
/* MPOA device types in MPOA Device Type TLV */
|
||||
#define NON_MPOA 0
|
||||
#define MPS 1
|
||||
#define MPC 2
|
||||
#define MPS_AND_MPC 3
|
||||
|
||||
|
||||
/* MPC parameter defaults */
|
||||
|
||||
#define MPC_P1 10 /* Shortcut-Setup Frame Count */
|
||||
#define MPC_P2 1 /* Shortcut-Setup Frame Time */
|
||||
#define MPC_P3 0 /* Flow-detection Protocols */
|
||||
#define MPC_P4 5 /* MPC Initial Retry Time */
|
||||
#define MPC_P5 40 /* MPC Retry Time Maximum */
|
||||
#define MPC_P6 160 /* Hold Down Time */
|
||||
#define HOLDING_TIME_DEFAULT 1200 /* same as MPS-p7 */
|
||||
|
||||
/* MPC constants */
|
||||
|
||||
#define MPC_C1 2 /* Retry Time Multiplier */
|
||||
#define MPC_C2 60 /* Initial Keep-Alive Lifetime */
|
||||
|
||||
/* Message types - to MPOA daemon */
|
||||
|
||||
#define SND_MPOA_RES_RQST 201
|
||||
#define SET_MPS_CTRL_ADDR 202
|
||||
#define SND_MPOA_RES_RTRY 203 /* Different type in a retry due to req id */
|
||||
#define STOP_KEEP_ALIVE_SM 204
|
||||
#define EGRESS_ENTRY_REMOVED 205
|
||||
#define SND_EGRESS_PURGE 206
|
||||
#define DIE 207 /* tell the daemon to exit() */
|
||||
#define DATA_PLANE_PURGE 208 /* Data plane purge because of egress cache hit miss or dead MPS */
|
||||
#define OPEN_INGRESS_SVC 209
|
||||
|
||||
/* Message types - from MPOA daemon */
|
||||
|
||||
#define MPOA_TRIGGER_RCVD 101
|
||||
#define MPOA_RES_REPLY_RCVD 102
|
||||
#define INGRESS_PURGE_RCVD 103
|
||||
#define EGRESS_PURGE_RCVD 104
|
||||
#define MPS_DEATH 105
|
||||
#define CACHE_IMPOS_RCVD 106
|
||||
#define SET_MPC_CTRL_ADDR 107 /* Our MPC's control ATM address */
|
||||
#define SET_MPS_MAC_ADDR 108
|
||||
#define CLEAN_UP_AND_EXIT 109
|
||||
#define SET_MPC_PARAMS 110 /* MPC configuration parameters */
|
||||
|
||||
/* Message types - bidirectional */
|
||||
|
||||
#define RELOAD 301 /* kill -HUP the daemon for reload */
|
||||
|
||||
#endif /* _ATMMPC_H_ */
|
||||
25
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmppp.h
Normal file
25
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmppp.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmppp.h - RFC2364 PPPoATM */
|
||||
|
||||
/* Written 2000 by Mitchell Blank Jr */
|
||||
|
||||
#ifndef _LINUX_ATMPPP_H
|
||||
#define _LINUX_ATMPPP_H
|
||||
|
||||
#include <linux/atm.h>
|
||||
|
||||
#define PPPOATM_ENCAPS_AUTODETECT (0)
|
||||
#define PPPOATM_ENCAPS_VC (1)
|
||||
#define PPPOATM_ENCAPS_LLC (2)
|
||||
|
||||
/*
|
||||
* This is for the ATM_SETBACKEND call - these are like socket families:
|
||||
* the first element of the structure is the backend number and the rest
|
||||
* is per-backend specific
|
||||
*/
|
||||
struct atm_backend_ppp {
|
||||
atm_backend_t backend_num; /* ATM_BACKEND_PPP */
|
||||
int encaps; /* PPPOATM_ENCAPS_* */
|
||||
};
|
||||
|
||||
#endif /* _LINUX_ATMPPP_H */
|
||||
163
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmsap.h
Normal file
163
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmsap.h
Normal file
@ -0,0 +1,163 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmsap.h - ATM Service Access Point addressing definitions */
|
||||
|
||||
/* Written 1995-1999 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef _LINUX_ATMSAP_H
|
||||
#define _LINUX_ATMSAP_H
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
|
||||
/*
|
||||
* BEGIN_xx and END_xx markers are used for automatic generation of
|
||||
* documentation. Do not change them.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Layer 2 protocol identifiers
|
||||
*/
|
||||
|
||||
/* BEGIN_L2 */
|
||||
#define ATM_L2_NONE 0 /* L2 not specified */
|
||||
#define ATM_L2_ISO1745 0x01 /* Basic mode ISO 1745 */
|
||||
#define ATM_L2_Q291 0x02 /* ITU-T Q.291 (Rec. I.441) */
|
||||
#define ATM_L2_X25_LL 0x06 /* ITU-T X.25, link layer */
|
||||
#define ATM_L2_X25_ML 0x07 /* ITU-T X.25, multilink */
|
||||
#define ATM_L2_LAPB 0x08 /* Extended LAPB, half-duplex (Rec. T.71) */
|
||||
#define ATM_L2_HDLC_ARM 0x09 /* HDLC ARM (ISO/IEC 4335) */
|
||||
#define ATM_L2_HDLC_NRM 0x0a /* HDLC NRM (ISO/IEC 4335) */
|
||||
#define ATM_L2_HDLC_ABM 0x0b /* HDLC ABM (ISO/IEC 4335) */
|
||||
#define ATM_L2_ISO8802 0x0c /* LAN LLC (ISO/IEC 8802/2) */
|
||||
#define ATM_L2_X75 0x0d /* ITU-T X.75, SLP */
|
||||
#define ATM_L2_Q922 0x0e /* ITU-T Q.922 */
|
||||
#define ATM_L2_USER 0x10 /* user-specified */
|
||||
#define ATM_L2_ISO7776 0x11 /* ISO 7776 DTE-DTE */
|
||||
/* END_L2 */
|
||||
|
||||
|
||||
/*
|
||||
* Layer 3 protocol identifiers
|
||||
*/
|
||||
|
||||
/* BEGIN_L3 */
|
||||
#define ATM_L3_NONE 0 /* L3 not specified */
|
||||
#define ATM_L3_X25 0x06 /* ITU-T X.25, packet layer */
|
||||
#define ATM_L3_ISO8208 0x07 /* ISO/IEC 8208 */
|
||||
#define ATM_L3_X223 0x08 /* ITU-T X.223 | ISO/IEC 8878 */
|
||||
#define ATM_L3_ISO8473 0x09 /* ITU-T X.233 | ISO/IEC 8473 */
|
||||
#define ATM_L3_T70 0x0a /* ITU-T T.70 minimum network layer */
|
||||
#define ATM_L3_TR9577 0x0b /* ISO/IEC TR 9577 */
|
||||
#define ATM_L3_H310 0x0c /* ITU-T Recommendation H.310 */
|
||||
#define ATM_L3_H321 0x0d /* ITU-T Recommendation H.321 */
|
||||
#define ATM_L3_USER 0x10 /* user-specified */
|
||||
/* END_L3 */
|
||||
|
||||
|
||||
/*
|
||||
* High layer identifiers
|
||||
*/
|
||||
|
||||
/* BEGIN_HL */
|
||||
#define ATM_HL_NONE 0 /* HL not specified */
|
||||
#define ATM_HL_ISO 0x01 /* ISO */
|
||||
#define ATM_HL_USER 0x02 /* user-specific */
|
||||
#define ATM_HL_HLP 0x03 /* high layer profile - UNI 3.0 only */
|
||||
#define ATM_HL_VENDOR 0x04 /* vendor-specific application identifier */
|
||||
/* END_HL */
|
||||
|
||||
|
||||
/*
|
||||
* ITU-T coded mode of operation
|
||||
*/
|
||||
|
||||
/* BEGIN_IMD */
|
||||
#define ATM_IMD_NONE 0 /* mode not specified */
|
||||
#define ATM_IMD_NORMAL 1 /* normal mode of operation */
|
||||
#define ATM_IMD_EXTENDED 2 /* extended mode of operation */
|
||||
/* END_IMD */
|
||||
|
||||
/*
|
||||
* H.310 code points
|
||||
*/
|
||||
|
||||
#define ATM_TT_NONE 0 /* terminal type not specified */
|
||||
#define ATM_TT_RX 1 /* receive only */
|
||||
#define ATM_TT_TX 2 /* send only */
|
||||
#define ATM_TT_RXTX 3 /* receive and send */
|
||||
|
||||
#define ATM_MC_NONE 0 /* no multiplexing */
|
||||
#define ATM_MC_TS 1 /* transport stream (TS) */
|
||||
#define ATM_MC_TS_FEC 2 /* transport stream with forward error corr. */
|
||||
#define ATM_MC_PS 3 /* program stream (PS) */
|
||||
#define ATM_MC_PS_FEC 4 /* program stream with forward error corr. */
|
||||
#define ATM_MC_H221 5 /* ITU-T Rec. H.221 */
|
||||
|
||||
/*
|
||||
* SAP structures
|
||||
*/
|
||||
|
||||
#define ATM_MAX_HLI 8 /* maximum high-layer information length */
|
||||
|
||||
|
||||
struct atm_blli {
|
||||
unsigned char l2_proto; /* layer 2 protocol */
|
||||
union {
|
||||
struct {
|
||||
unsigned char mode; /* mode of operation (ATM_IMD_xxx), 0 if */
|
||||
/* absent */
|
||||
unsigned char window; /* window size (k), 1-127 (0 to omit) */
|
||||
} itu; /* ITU-T encoding */
|
||||
unsigned char user; /* user-specified l2 information */
|
||||
} l2;
|
||||
unsigned char l3_proto; /* layer 3 protocol */
|
||||
union {
|
||||
struct {
|
||||
unsigned char mode; /* mode of operation (ATM_IMD_xxx), 0 if */
|
||||
/* absent */
|
||||
unsigned char def_size; /* default packet size (log2), 4-12 (0 to */
|
||||
/* omit) */
|
||||
unsigned char window;/* packet window size, 1-127 (0 to omit) */
|
||||
} itu; /* ITU-T encoding */
|
||||
unsigned char user; /* user specified l3 information */
|
||||
struct { /* if l3_proto = ATM_L3_H310 */
|
||||
unsigned char term_type; /* terminal type */
|
||||
unsigned char fw_mpx_cap; /* forward multiplexing capability */
|
||||
/* only if term_type != ATM_TT_NONE */
|
||||
unsigned char bw_mpx_cap; /* backward multiplexing capability */
|
||||
/* only if term_type != ATM_TT_NONE */
|
||||
} h310;
|
||||
struct { /* if l3_proto = ATM_L3_TR9577 */
|
||||
unsigned char ipi; /* initial protocol id */
|
||||
unsigned char snap[5];/* IEEE 802.1 SNAP identifier */
|
||||
/* (only if ipi == NLPID_IEEE802_1_SNAP) */
|
||||
} tr9577;
|
||||
} l3;
|
||||
} __ATM_API_ALIGN;
|
||||
|
||||
|
||||
struct atm_bhli {
|
||||
unsigned char hl_type; /* high layer information type */
|
||||
unsigned char hl_length; /* length (only if hl_type == ATM_HL_USER || */
|
||||
/* hl_type == ATM_HL_ISO) */
|
||||
unsigned char hl_info[ATM_MAX_HLI];/* high layer information */
|
||||
};
|
||||
|
||||
|
||||
#define ATM_MAX_BLLI 3 /* maximum number of BLLI elements */
|
||||
|
||||
|
||||
struct atm_sap {
|
||||
struct atm_bhli bhli; /* local SAP, high-layer information */
|
||||
struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
|
||||
/* local SAP, low-layer info */
|
||||
};
|
||||
|
||||
|
||||
static __inline__ int blli_in_use(struct atm_blli blli)
|
||||
{
|
||||
return blli.l2_proto || blli.l3_proto;
|
||||
}
|
||||
|
||||
#endif
|
||||
56
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmsvc.h
Normal file
56
ramdisk/initramfs/glibc_riscv64/usr/include/linux/atmsvc.h
Normal file
@ -0,0 +1,56 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* atmsvc.h - ATM signaling kernel-demon interface definitions */
|
||||
|
||||
/* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */
|
||||
|
||||
|
||||
#ifndef _LINUX_ATMSVC_H
|
||||
#define _LINUX_ATMSVC_H
|
||||
|
||||
#include <linux/atmapi.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/atmioc.h>
|
||||
|
||||
|
||||
#define ATMSIGD_CTRL _IO('a',ATMIOC_SPECIAL)
|
||||
/* become ATM signaling demon control socket */
|
||||
|
||||
enum atmsvc_msg_type { as_catch_null, as_bind, as_connect, as_accept, as_reject,
|
||||
as_listen, as_okay, as_error, as_indicate, as_close,
|
||||
as_itf_notify, as_modify, as_identify, as_terminate,
|
||||
as_addparty, as_dropparty };
|
||||
|
||||
struct atmsvc_msg {
|
||||
enum atmsvc_msg_type type;
|
||||
atm_kptr_t vcc;
|
||||
atm_kptr_t listen_vcc; /* indicate */
|
||||
int reply; /* for okay and close: */
|
||||
/* < 0: error before active */
|
||||
/* (sigd has discarded ctx) */
|
||||
/* ==0: success */
|
||||
/* > 0: error when active (still */
|
||||
/* need to close) */
|
||||
struct sockaddr_atmpvc pvc; /* indicate, okay (connect) */
|
||||
struct sockaddr_atmsvc local; /* local SVC address */
|
||||
struct atm_qos qos; /* QOS parameters */
|
||||
struct atm_sap sap; /* SAP */
|
||||
unsigned int session; /* for p2pm */
|
||||
struct sockaddr_atmsvc svc; /* SVC address */
|
||||
} __ATM_API_ALIGN;
|
||||
|
||||
/*
|
||||
* Message contents: see ftp://icaftp.epfl.ch/pub/linux/atm/docs/isp-*.tar.gz
|
||||
*/
|
||||
|
||||
/*
|
||||
* Some policy stuff for atmsigd and for net/atm/svc.c. Both have to agree on
|
||||
* what PCR is used to request bandwidth from the device driver. net/atm/svc.c
|
||||
* tries to do better than that, but only if there's no routing decision (i.e.
|
||||
* if signaling only uses one ATM interface).
|
||||
*/
|
||||
|
||||
#define SELECT_TOP_PCR(tp) ((tp).pcr ? (tp).pcr : \
|
||||
(tp).max_pcr && (tp).max_pcr != ATM_MAX_PCR ? (tp).max_pcr : \
|
||||
(tp).min_pcr ? (tp).min_pcr : ATM_MAX_PCR)
|
||||
|
||||
#endif
|
||||
508
ramdisk/initramfs/glibc_riscv64/usr/include/linux/audit.h
Normal file
508
ramdisk/initramfs/glibc_riscv64/usr/include/linux/audit.h
Normal file
@ -0,0 +1,508 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/* audit.h -- Auditing support
|
||||
*
|
||||
* Copyright 2003-2004 Red Hat Inc., Durham, North Carolina.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Written by Rickard E. (Rik) Faith <faith@redhat.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_AUDIT_H_
|
||||
#define _LINUX_AUDIT_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/elf-em.h>
|
||||
|
||||
/* The netlink messages for the audit system is divided into blocks:
|
||||
* 1000 - 1099 are for commanding the audit system
|
||||
* 1100 - 1199 user space trusted application messages
|
||||
* 1200 - 1299 messages internal to the audit daemon
|
||||
* 1300 - 1399 audit event messages
|
||||
* 1400 - 1499 SE Linux use
|
||||
* 1500 - 1599 kernel LSPP events
|
||||
* 1600 - 1699 kernel crypto events
|
||||
* 1700 - 1799 kernel anomaly records
|
||||
* 1800 - 1899 kernel integrity events
|
||||
* 1900 - 1999 future kernel use
|
||||
* 2000 is for otherwise unclassified kernel audit messages (legacy)
|
||||
* 2001 - 2099 unused (kernel)
|
||||
* 2100 - 2199 user space anomaly records
|
||||
* 2200 - 2299 user space actions taken in response to anomalies
|
||||
* 2300 - 2399 user space generated LSPP events
|
||||
* 2400 - 2499 user space crypto events
|
||||
* 2500 - 2999 future user space (maybe integrity labels and related events)
|
||||
*
|
||||
* Messages from 1000-1199 are bi-directional. 1200-1299 & 2100 - 2999 are
|
||||
* exclusively user space. 1300-2099 is kernel --> user space
|
||||
* communication.
|
||||
*/
|
||||
#define AUDIT_GET 1000 /* Get status */
|
||||
#define AUDIT_SET 1001 /* Set status (enable/disable/auditd) */
|
||||
#define AUDIT_LIST 1002 /* List syscall rules -- deprecated */
|
||||
#define AUDIT_ADD 1003 /* Add syscall rule -- deprecated */
|
||||
#define AUDIT_DEL 1004 /* Delete syscall rule -- deprecated */
|
||||
#define AUDIT_USER 1005 /* Message from userspace -- deprecated */
|
||||
#define AUDIT_LOGIN 1006 /* Define the login id and information */
|
||||
#define AUDIT_WATCH_INS 1007 /* Insert file/dir watch entry */
|
||||
#define AUDIT_WATCH_REM 1008 /* Remove file/dir watch entry */
|
||||
#define AUDIT_WATCH_LIST 1009 /* List all file/dir watches */
|
||||
#define AUDIT_SIGNAL_INFO 1010 /* Get info about sender of signal to auditd */
|
||||
#define AUDIT_ADD_RULE 1011 /* Add syscall filtering rule */
|
||||
#define AUDIT_DEL_RULE 1012 /* Delete syscall filtering rule */
|
||||
#define AUDIT_LIST_RULES 1013 /* List syscall filtering rules */
|
||||
#define AUDIT_TRIM 1014 /* Trim junk from watched tree */
|
||||
#define AUDIT_MAKE_EQUIV 1015 /* Append to watched tree */
|
||||
#define AUDIT_TTY_GET 1016 /* Get TTY auditing status */
|
||||
#define AUDIT_TTY_SET 1017 /* Set TTY auditing status */
|
||||
#define AUDIT_SET_FEATURE 1018 /* Turn an audit feature on or off */
|
||||
#define AUDIT_GET_FEATURE 1019 /* Get which features are enabled */
|
||||
|
||||
#define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages mostly uninteresting to kernel */
|
||||
#define AUDIT_USER_AVC 1107 /* We filter this differently */
|
||||
#define AUDIT_USER_TTY 1124 /* Non-ICANON TTY input meaning */
|
||||
#define AUDIT_LAST_USER_MSG 1199
|
||||
#define AUDIT_FIRST_USER_MSG2 2100 /* More user space messages */
|
||||
#define AUDIT_LAST_USER_MSG2 2999
|
||||
|
||||
#define AUDIT_DAEMON_START 1200 /* Daemon startup record */
|
||||
#define AUDIT_DAEMON_END 1201 /* Daemon normal stop record */
|
||||
#define AUDIT_DAEMON_ABORT 1202 /* Daemon error stop record */
|
||||
#define AUDIT_DAEMON_CONFIG 1203 /* Daemon config change */
|
||||
|
||||
#define AUDIT_SYSCALL 1300 /* Syscall event */
|
||||
/* #define AUDIT_FS_WATCH 1301 * Deprecated */
|
||||
#define AUDIT_PATH 1302 /* Filename path information */
|
||||
#define AUDIT_IPC 1303 /* IPC record */
|
||||
#define AUDIT_SOCKETCALL 1304 /* sys_socketcall arguments */
|
||||
#define AUDIT_CONFIG_CHANGE 1305 /* Audit system configuration change */
|
||||
#define AUDIT_SOCKADDR 1306 /* sockaddr copied as syscall arg */
|
||||
#define AUDIT_CWD 1307 /* Current working directory */
|
||||
#define AUDIT_EXECVE 1309 /* execve arguments */
|
||||
#define AUDIT_IPC_SET_PERM 1311 /* IPC new permissions record type */
|
||||
#define AUDIT_MQ_OPEN 1312 /* POSIX MQ open record type */
|
||||
#define AUDIT_MQ_SENDRECV 1313 /* POSIX MQ send/receive record type */
|
||||
#define AUDIT_MQ_NOTIFY 1314 /* POSIX MQ notify record type */
|
||||
#define AUDIT_MQ_GETSETATTR 1315 /* POSIX MQ get/set attribute record type */
|
||||
#define AUDIT_KERNEL_OTHER 1316 /* For use by 3rd party modules */
|
||||
#define AUDIT_FD_PAIR 1317 /* audit record for pipe/socketpair */
|
||||
#define AUDIT_OBJ_PID 1318 /* ptrace target */
|
||||
#define AUDIT_TTY 1319 /* Input on an administrative TTY */
|
||||
#define AUDIT_EOE 1320 /* End of multi-record event */
|
||||
#define AUDIT_BPRM_FCAPS 1321 /* Information about fcaps increasing perms */
|
||||
#define AUDIT_CAPSET 1322 /* Record showing argument to sys_capset */
|
||||
#define AUDIT_MMAP 1323 /* Record showing descriptor and flags in mmap */
|
||||
#define AUDIT_NETFILTER_PKT 1324 /* Packets traversing netfilter chains */
|
||||
#define AUDIT_NETFILTER_CFG 1325 /* Netfilter chain modifications */
|
||||
#define AUDIT_SECCOMP 1326 /* Secure Computing event */
|
||||
#define AUDIT_PROCTITLE 1327 /* Proctitle emit event */
|
||||
#define AUDIT_FEATURE_CHANGE 1328 /* audit log listing feature changes */
|
||||
#define AUDIT_REPLACE 1329 /* Replace auditd if this packet unanswerd */
|
||||
#define AUDIT_KERN_MODULE 1330 /* Kernel Module events */
|
||||
#define AUDIT_FANOTIFY 1331 /* Fanotify access decision */
|
||||
#define AUDIT_TIME_INJOFFSET 1332 /* Timekeeping offset injected */
|
||||
#define AUDIT_TIME_ADJNTPVAL 1333 /* NTP value adjustment */
|
||||
|
||||
#define AUDIT_AVC 1400 /* SE Linux avc denial or grant */
|
||||
#define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */
|
||||
#define AUDIT_AVC_PATH 1402 /* dentry, vfsmount pair from avc */
|
||||
#define AUDIT_MAC_POLICY_LOAD 1403 /* Policy file load */
|
||||
#define AUDIT_MAC_STATUS 1404 /* Changed enforcing,permissive,off */
|
||||
#define AUDIT_MAC_CONFIG_CHANGE 1405 /* Changes to booleans */
|
||||
#define AUDIT_MAC_UNLBL_ALLOW 1406 /* NetLabel: allow unlabeled traffic */
|
||||
#define AUDIT_MAC_CIPSOV4_ADD 1407 /* NetLabel: add CIPSOv4 DOI entry */
|
||||
#define AUDIT_MAC_CIPSOV4_DEL 1408 /* NetLabel: del CIPSOv4 DOI entry */
|
||||
#define AUDIT_MAC_MAP_ADD 1409 /* NetLabel: add LSM domain mapping */
|
||||
#define AUDIT_MAC_MAP_DEL 1410 /* NetLabel: del LSM domain mapping */
|
||||
#define AUDIT_MAC_IPSEC_ADDSA 1411 /* Not used */
|
||||
#define AUDIT_MAC_IPSEC_DELSA 1412 /* Not used */
|
||||
#define AUDIT_MAC_IPSEC_ADDSPD 1413 /* Not used */
|
||||
#define AUDIT_MAC_IPSEC_DELSPD 1414 /* Not used */
|
||||
#define AUDIT_MAC_IPSEC_EVENT 1415 /* Audit an IPSec event */
|
||||
#define AUDIT_MAC_UNLBL_STCADD 1416 /* NetLabel: add a static label */
|
||||
#define AUDIT_MAC_UNLBL_STCDEL 1417 /* NetLabel: del a static label */
|
||||
#define AUDIT_MAC_CALIPSO_ADD 1418 /* NetLabel: add CALIPSO DOI entry */
|
||||
#define AUDIT_MAC_CALIPSO_DEL 1419 /* NetLabel: del CALIPSO DOI entry */
|
||||
|
||||
#define AUDIT_FIRST_KERN_ANOM_MSG 1700
|
||||
#define AUDIT_LAST_KERN_ANOM_MSG 1799
|
||||
#define AUDIT_ANOM_PROMISCUOUS 1700 /* Device changed promiscuous mode */
|
||||
#define AUDIT_ANOM_ABEND 1701 /* Process ended abnormally */
|
||||
#define AUDIT_ANOM_LINK 1702 /* Suspicious use of file links */
|
||||
#define AUDIT_INTEGRITY_DATA 1800 /* Data integrity verification */
|
||||
#define AUDIT_INTEGRITY_METADATA 1801 /* Metadata integrity verification */
|
||||
#define AUDIT_INTEGRITY_STATUS 1802 /* Integrity enable status */
|
||||
#define AUDIT_INTEGRITY_HASH 1803 /* Integrity HASH type */
|
||||
#define AUDIT_INTEGRITY_PCR 1804 /* PCR invalidation msgs */
|
||||
#define AUDIT_INTEGRITY_RULE 1805 /* policy rule */
|
||||
#define AUDIT_INTEGRITY_EVM_XATTR 1806 /* New EVM-covered xattr */
|
||||
#define AUDIT_INTEGRITY_POLICY_RULE 1807 /* IMA policy rules */
|
||||
|
||||
#define AUDIT_KERNEL 2000 /* Asynchronous audit record. NOT A REQUEST. */
|
||||
|
||||
/* Rule flags */
|
||||
#define AUDIT_FILTER_USER 0x00 /* Apply rule to user-generated messages */
|
||||
#define AUDIT_FILTER_TASK 0x01 /* Apply rule at task creation (not syscall) */
|
||||
#define AUDIT_FILTER_ENTRY 0x02 /* Apply rule at syscall entry */
|
||||
#define AUDIT_FILTER_WATCH 0x03 /* Apply rule to file system watches */
|
||||
#define AUDIT_FILTER_EXIT 0x04 /* Apply rule at syscall exit */
|
||||
#define AUDIT_FILTER_EXCLUDE 0x05 /* Apply rule before record creation */
|
||||
#define AUDIT_FILTER_TYPE AUDIT_FILTER_EXCLUDE /* obsolete misleading naming */
|
||||
#define AUDIT_FILTER_FS 0x06 /* Apply rule at __audit_inode_child */
|
||||
|
||||
#define AUDIT_NR_FILTERS 7
|
||||
|
||||
#define AUDIT_FILTER_PREPEND 0x10 /* Prepend to front of list */
|
||||
|
||||
/* Rule actions */
|
||||
#define AUDIT_NEVER 0 /* Do not build context if rule matches */
|
||||
#define AUDIT_POSSIBLE 1 /* Build context if rule matches */
|
||||
#define AUDIT_ALWAYS 2 /* Generate audit record if rule matches */
|
||||
|
||||
/* Rule structure sizes -- if these change, different AUDIT_ADD and
|
||||
* AUDIT_LIST commands must be implemented. */
|
||||
#define AUDIT_MAX_FIELDS 64
|
||||
#define AUDIT_MAX_KEY_LEN 256
|
||||
#define AUDIT_BITMASK_SIZE 64
|
||||
#define AUDIT_WORD(nr) ((__u32)((nr)/32))
|
||||
#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr)*32))
|
||||
|
||||
#define AUDIT_SYSCALL_CLASSES 16
|
||||
#define AUDIT_CLASS_DIR_WRITE 0
|
||||
#define AUDIT_CLASS_DIR_WRITE_32 1
|
||||
#define AUDIT_CLASS_CHATTR 2
|
||||
#define AUDIT_CLASS_CHATTR_32 3
|
||||
#define AUDIT_CLASS_READ 4
|
||||
#define AUDIT_CLASS_READ_32 5
|
||||
#define AUDIT_CLASS_WRITE 6
|
||||
#define AUDIT_CLASS_WRITE_32 7
|
||||
#define AUDIT_CLASS_SIGNAL 8
|
||||
#define AUDIT_CLASS_SIGNAL_32 9
|
||||
|
||||
/* This bitmask is used to validate user input. It represents all bits that
|
||||
* are currently used in an audit field constant understood by the kernel.
|
||||
* If you are adding a new #define AUDIT_<whatever>, please ensure that
|
||||
* AUDIT_UNUSED_BITS is updated if need be. */
|
||||
#define AUDIT_UNUSED_BITS 0x07FFFC00
|
||||
|
||||
/* AUDIT_FIELD_COMPARE rule list */
|
||||
#define AUDIT_COMPARE_UID_TO_OBJ_UID 1
|
||||
#define AUDIT_COMPARE_GID_TO_OBJ_GID 2
|
||||
#define AUDIT_COMPARE_EUID_TO_OBJ_UID 3
|
||||
#define AUDIT_COMPARE_EGID_TO_OBJ_GID 4
|
||||
#define AUDIT_COMPARE_AUID_TO_OBJ_UID 5
|
||||
#define AUDIT_COMPARE_SUID_TO_OBJ_UID 6
|
||||
#define AUDIT_COMPARE_SGID_TO_OBJ_GID 7
|
||||
#define AUDIT_COMPARE_FSUID_TO_OBJ_UID 8
|
||||
#define AUDIT_COMPARE_FSGID_TO_OBJ_GID 9
|
||||
|
||||
#define AUDIT_COMPARE_UID_TO_AUID 10
|
||||
#define AUDIT_COMPARE_UID_TO_EUID 11
|
||||
#define AUDIT_COMPARE_UID_TO_FSUID 12
|
||||
#define AUDIT_COMPARE_UID_TO_SUID 13
|
||||
|
||||
#define AUDIT_COMPARE_AUID_TO_FSUID 14
|
||||
#define AUDIT_COMPARE_AUID_TO_SUID 15
|
||||
#define AUDIT_COMPARE_AUID_TO_EUID 16
|
||||
|
||||
#define AUDIT_COMPARE_EUID_TO_SUID 17
|
||||
#define AUDIT_COMPARE_EUID_TO_FSUID 18
|
||||
|
||||
#define AUDIT_COMPARE_SUID_TO_FSUID 19
|
||||
|
||||
#define AUDIT_COMPARE_GID_TO_EGID 20
|
||||
#define AUDIT_COMPARE_GID_TO_FSGID 21
|
||||
#define AUDIT_COMPARE_GID_TO_SGID 22
|
||||
|
||||
#define AUDIT_COMPARE_EGID_TO_FSGID 23
|
||||
#define AUDIT_COMPARE_EGID_TO_SGID 24
|
||||
#define AUDIT_COMPARE_SGID_TO_FSGID 25
|
||||
|
||||
#define AUDIT_MAX_FIELD_COMPARE AUDIT_COMPARE_SGID_TO_FSGID
|
||||
|
||||
/* Rule fields */
|
||||
/* These are useful when checking the
|
||||
* task structure at task creation time
|
||||
* (AUDIT_PER_TASK). */
|
||||
#define AUDIT_PID 0
|
||||
#define AUDIT_UID 1
|
||||
#define AUDIT_EUID 2
|
||||
#define AUDIT_SUID 3
|
||||
#define AUDIT_FSUID 4
|
||||
#define AUDIT_GID 5
|
||||
#define AUDIT_EGID 6
|
||||
#define AUDIT_SGID 7
|
||||
#define AUDIT_FSGID 8
|
||||
#define AUDIT_LOGINUID 9
|
||||
#define AUDIT_PERS 10
|
||||
#define AUDIT_ARCH 11
|
||||
#define AUDIT_MSGTYPE 12
|
||||
#define AUDIT_SUBJ_USER 13 /* security label user */
|
||||
#define AUDIT_SUBJ_ROLE 14 /* security label role */
|
||||
#define AUDIT_SUBJ_TYPE 15 /* security label type */
|
||||
#define AUDIT_SUBJ_SEN 16 /* security label sensitivity label */
|
||||
#define AUDIT_SUBJ_CLR 17 /* security label clearance label */
|
||||
#define AUDIT_PPID 18
|
||||
#define AUDIT_OBJ_USER 19
|
||||
#define AUDIT_OBJ_ROLE 20
|
||||
#define AUDIT_OBJ_TYPE 21
|
||||
#define AUDIT_OBJ_LEV_LOW 22
|
||||
#define AUDIT_OBJ_LEV_HIGH 23
|
||||
#define AUDIT_LOGINUID_SET 24
|
||||
#define AUDIT_SESSIONID 25 /* Session ID */
|
||||
#define AUDIT_FSTYPE 26 /* FileSystem Type */
|
||||
|
||||
/* These are ONLY useful when checking
|
||||
* at syscall exit time (AUDIT_AT_EXIT). */
|
||||
#define AUDIT_DEVMAJOR 100
|
||||
#define AUDIT_DEVMINOR 101
|
||||
#define AUDIT_INODE 102
|
||||
#define AUDIT_EXIT 103
|
||||
#define AUDIT_SUCCESS 104 /* exit >= 0; value ignored */
|
||||
#define AUDIT_WATCH 105
|
||||
#define AUDIT_PERM 106
|
||||
#define AUDIT_DIR 107
|
||||
#define AUDIT_FILETYPE 108
|
||||
#define AUDIT_OBJ_UID 109
|
||||
#define AUDIT_OBJ_GID 110
|
||||
#define AUDIT_FIELD_COMPARE 111
|
||||
#define AUDIT_EXE 112
|
||||
#define AUDIT_SADDR_FAM 113
|
||||
|
||||
#define AUDIT_ARG0 200
|
||||
#define AUDIT_ARG1 (AUDIT_ARG0+1)
|
||||
#define AUDIT_ARG2 (AUDIT_ARG0+2)
|
||||
#define AUDIT_ARG3 (AUDIT_ARG0+3)
|
||||
|
||||
#define AUDIT_FILTERKEY 210
|
||||
|
||||
#define AUDIT_NEGATE 0x80000000
|
||||
|
||||
/* These are the supported operators.
|
||||
* 4 2 1 8
|
||||
* = > < ?
|
||||
* ----------
|
||||
* 0 0 0 0 00 nonsense
|
||||
* 0 0 0 1 08 & bit mask
|
||||
* 0 0 1 0 10 <
|
||||
* 0 1 0 0 20 >
|
||||
* 0 1 1 0 30 !=
|
||||
* 1 0 0 0 40 =
|
||||
* 1 0 0 1 48 &= bit test
|
||||
* 1 0 1 0 50 <=
|
||||
* 1 1 0 0 60 >=
|
||||
* 1 1 1 1 78 all operators
|
||||
*/
|
||||
#define AUDIT_BIT_MASK 0x08000000
|
||||
#define AUDIT_LESS_THAN 0x10000000
|
||||
#define AUDIT_GREATER_THAN 0x20000000
|
||||
#define AUDIT_NOT_EQUAL 0x30000000
|
||||
#define AUDIT_EQUAL 0x40000000
|
||||
#define AUDIT_BIT_TEST (AUDIT_BIT_MASK|AUDIT_EQUAL)
|
||||
#define AUDIT_LESS_THAN_OR_EQUAL (AUDIT_LESS_THAN|AUDIT_EQUAL)
|
||||
#define AUDIT_GREATER_THAN_OR_EQUAL (AUDIT_GREATER_THAN|AUDIT_EQUAL)
|
||||
#define AUDIT_OPERATORS (AUDIT_EQUAL|AUDIT_NOT_EQUAL|AUDIT_BIT_MASK)
|
||||
|
||||
enum {
|
||||
Audit_equal,
|
||||
Audit_not_equal,
|
||||
Audit_bitmask,
|
||||
Audit_bittest,
|
||||
Audit_lt,
|
||||
Audit_gt,
|
||||
Audit_le,
|
||||
Audit_ge,
|
||||
Audit_bad
|
||||
};
|
||||
|
||||
/* Status symbols */
|
||||
/* Mask values */
|
||||
#define AUDIT_STATUS_ENABLED 0x0001
|
||||
#define AUDIT_STATUS_FAILURE 0x0002
|
||||
#define AUDIT_STATUS_PID 0x0004
|
||||
#define AUDIT_STATUS_RATE_LIMIT 0x0008
|
||||
#define AUDIT_STATUS_BACKLOG_LIMIT 0x0010
|
||||
#define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020
|
||||
#define AUDIT_STATUS_LOST 0x0040
|
||||
|
||||
#define AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT 0x00000001
|
||||
#define AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME 0x00000002
|
||||
#define AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH 0x00000004
|
||||
#define AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND 0x00000008
|
||||
#define AUDIT_FEATURE_BITMAP_SESSIONID_FILTER 0x00000010
|
||||
#define AUDIT_FEATURE_BITMAP_LOST_RESET 0x00000020
|
||||
#define AUDIT_FEATURE_BITMAP_FILTER_FS 0x00000040
|
||||
|
||||
#define AUDIT_FEATURE_BITMAP_ALL (AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | \
|
||||
AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME | \
|
||||
AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH | \
|
||||
AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND | \
|
||||
AUDIT_FEATURE_BITMAP_SESSIONID_FILTER | \
|
||||
AUDIT_FEATURE_BITMAP_LOST_RESET | \
|
||||
AUDIT_FEATURE_BITMAP_FILTER_FS)
|
||||
|
||||
/* deprecated: AUDIT_VERSION_* */
|
||||
#define AUDIT_VERSION_LATEST AUDIT_FEATURE_BITMAP_ALL
|
||||
#define AUDIT_VERSION_BACKLOG_LIMIT AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT
|
||||
#define AUDIT_VERSION_BACKLOG_WAIT_TIME AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME
|
||||
|
||||
/* Failure-to-log actions */
|
||||
#define AUDIT_FAIL_SILENT 0
|
||||
#define AUDIT_FAIL_PRINTK 1
|
||||
#define AUDIT_FAIL_PANIC 2
|
||||
|
||||
/*
|
||||
* These bits disambiguate different calling conventions that share an
|
||||
* ELF machine type, bitness, and endianness
|
||||
*/
|
||||
#define __AUDIT_ARCH_CONVENTION_MASK 0x30000000
|
||||
#define __AUDIT_ARCH_CONVENTION_MIPS64_N32 0x20000000
|
||||
|
||||
/* distinguish syscall tables */
|
||||
#define __AUDIT_ARCH_64BIT 0x80000000
|
||||
#define __AUDIT_ARCH_LE 0x40000000
|
||||
|
||||
#define AUDIT_ARCH_AARCH64 (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ALPHA (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARCOMPACT (EM_ARCOMPACT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARCOMPACTBE (EM_ARCOMPACT)
|
||||
#define AUDIT_ARCH_ARCV2 (EM_ARCV2|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARCV2BE (EM_ARCV2)
|
||||
#define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARMEB (EM_ARM)
|
||||
#define AUDIT_ARCH_C6X (EM_TI_C6000|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_C6XBE (EM_TI_C6000)
|
||||
#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_FRV (EM_FRV)
|
||||
#define AUDIT_ARCH_H8300 (EM_H8_300)
|
||||
#define AUDIT_ARCH_HEXAGON (EM_HEXAGON)
|
||||
#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_M32R (EM_M32R)
|
||||
#define AUDIT_ARCH_M68K (EM_68K)
|
||||
#define AUDIT_ARCH_MICROBLAZE (EM_MICROBLAZE)
|
||||
#define AUDIT_ARCH_MIPS (EM_MIPS)
|
||||
#define AUDIT_ARCH_MIPSEL (EM_MIPS|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_MIPS64 (EM_MIPS|__AUDIT_ARCH_64BIT)
|
||||
#define AUDIT_ARCH_MIPS64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|\
|
||||
__AUDIT_ARCH_CONVENTION_MIPS64_N32)
|
||||
#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|\
|
||||
__AUDIT_ARCH_CONVENTION_MIPS64_N32)
|
||||
#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_NDS32BE (EM_NDS32)
|
||||
#define AUDIT_ARCH_NIOS2 (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)
|
||||
#define AUDIT_ARCH_PARISC (EM_PARISC)
|
||||
#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
|
||||
#define AUDIT_ARCH_PPC (EM_PPC)
|
||||
/* do not define AUDIT_ARCH_PPCLE since it is not supported by audit */
|
||||
#define AUDIT_ARCH_PPC64 (EM_PPC64|__AUDIT_ARCH_64BIT)
|
||||
#define AUDIT_ARCH_PPC64LE (EM_PPC64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_RISCV32 (EM_RISCV|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_RISCV64 (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_S390 (EM_S390)
|
||||
#define AUDIT_ARCH_S390X (EM_S390|__AUDIT_ARCH_64BIT)
|
||||
#define AUDIT_ARCH_SH (EM_SH)
|
||||
#define AUDIT_ARCH_SHEL (EM_SH|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_SH64 (EM_SH|__AUDIT_ARCH_64BIT)
|
||||
#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_SPARC (EM_SPARC)
|
||||
#define AUDIT_ARCH_SPARC64 (EM_SPARCV9|__AUDIT_ARCH_64BIT)
|
||||
#define AUDIT_ARCH_TILEGX (EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_TILEGX32 (EM_TILEGX|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_TILEPRO (EM_TILEPRO|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_UNICORE (EM_UNICORE|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_XTENSA (EM_XTENSA)
|
||||
|
||||
#define AUDIT_PERM_EXEC 1
|
||||
#define AUDIT_PERM_WRITE 2
|
||||
#define AUDIT_PERM_READ 4
|
||||
#define AUDIT_PERM_ATTR 8
|
||||
|
||||
/* MAX_AUDIT_MESSAGE_LENGTH is set in audit:lib/libaudit.h as:
|
||||
* 8970 // PATH_MAX*2+CONTEXT_SIZE*2+11+256+1
|
||||
* max header+body+tailer: 44 + 29 + 32 + 262 + 7 + pad
|
||||
*/
|
||||
#define AUDIT_MESSAGE_TEXT_MAX 8560
|
||||
|
||||
/* Multicast Netlink socket groups (default up to 32) */
|
||||
enum audit_nlgrps {
|
||||
AUDIT_NLGRP_NONE, /* Group 0 not used */
|
||||
AUDIT_NLGRP_READLOG, /* "best effort" read only socket */
|
||||
__AUDIT_NLGRP_MAX
|
||||
};
|
||||
#define AUDIT_NLGRP_MAX (__AUDIT_NLGRP_MAX - 1)
|
||||
|
||||
struct audit_status {
|
||||
__u32 mask; /* Bit mask for valid entries */
|
||||
__u32 enabled; /* 1 = enabled, 0 = disabled */
|
||||
__u32 failure; /* Failure-to-log action */
|
||||
__u32 pid; /* pid of auditd process */
|
||||
__u32 rate_limit; /* messages rate limit (per second) */
|
||||
__u32 backlog_limit; /* waiting messages limit */
|
||||
__u32 lost; /* messages lost */
|
||||
__u32 backlog; /* messages waiting in queue */
|
||||
union {
|
||||
__u32 version; /* deprecated: audit api version num */
|
||||
__u32 feature_bitmap; /* bitmap of kernel audit features */
|
||||
};
|
||||
__u32 backlog_wait_time;/* message queue wait timeout */
|
||||
};
|
||||
|
||||
struct audit_features {
|
||||
#define AUDIT_FEATURE_VERSION 1
|
||||
__u32 vers;
|
||||
__u32 mask; /* which bits we are dealing with */
|
||||
__u32 features; /* which feature to enable/disable */
|
||||
__u32 lock; /* which features to lock */
|
||||
};
|
||||
|
||||
#define AUDIT_FEATURE_ONLY_UNSET_LOGINUID 0
|
||||
#define AUDIT_FEATURE_LOGINUID_IMMUTABLE 1
|
||||
#define AUDIT_LAST_FEATURE AUDIT_FEATURE_LOGINUID_IMMUTABLE
|
||||
|
||||
#define audit_feature_valid(x) ((x) >= 0 && (x) <= AUDIT_LAST_FEATURE)
|
||||
#define AUDIT_FEATURE_TO_MASK(x) (1 << ((x) & 31)) /* mask for __u32 */
|
||||
|
||||
struct audit_tty_status {
|
||||
__u32 enabled; /* 1 = enabled, 0 = disabled */
|
||||
__u32 log_passwd; /* 1 = enabled, 0 = disabled */
|
||||
};
|
||||
|
||||
#define AUDIT_UID_UNSET (unsigned int)-1
|
||||
#define AUDIT_SID_UNSET ((unsigned int)-1)
|
||||
|
||||
/* audit_rule_data supports filter rules with both integer and string
|
||||
* fields. It corresponds with AUDIT_ADD_RULE, AUDIT_DEL_RULE and
|
||||
* AUDIT_LIST_RULES requests.
|
||||
*/
|
||||
struct audit_rule_data {
|
||||
__u32 flags; /* AUDIT_PER_{TASK,CALL}, AUDIT_PREPEND */
|
||||
__u32 action; /* AUDIT_NEVER, AUDIT_POSSIBLE, AUDIT_ALWAYS */
|
||||
__u32 field_count;
|
||||
__u32 mask[AUDIT_BITMASK_SIZE]; /* syscall(s) affected */
|
||||
__u32 fields[AUDIT_MAX_FIELDS];
|
||||
__u32 values[AUDIT_MAX_FIELDS];
|
||||
__u32 fieldflags[AUDIT_MAX_FIELDS];
|
||||
__u32 buflen; /* total length of string fields */
|
||||
char buf[0]; /* string fields buffer */
|
||||
};
|
||||
|
||||
#endif /* _LINUX_AUDIT_H_ */
|
||||
@ -0,0 +1,216 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 2008 Red Hat, Inc. All rights reserved.
|
||||
* Copyright 2008 Ian Kent <raven@themaw.net>
|
||||
*
|
||||
* This file is part of the Linux kernel and is made available under
|
||||
* the terms of the GNU General Public License, version 2, or at your
|
||||
* option, any later version, incorporated herein by reference.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_AUTO_DEV_IOCTL_H
|
||||
#define _LINUX_AUTO_DEV_IOCTL_H
|
||||
|
||||
#include <linux/auto_fs.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#define AUTOFS_DEVICE_NAME "autofs"
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_VERSION_MAJOR 1
|
||||
#define AUTOFS_DEV_IOCTL_VERSION_MINOR 1
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_SIZE sizeof(struct autofs_dev_ioctl)
|
||||
|
||||
/*
|
||||
* An ioctl interface for autofs mount point control.
|
||||
*/
|
||||
|
||||
struct args_protover {
|
||||
__u32 version;
|
||||
};
|
||||
|
||||
struct args_protosubver {
|
||||
__u32 sub_version;
|
||||
};
|
||||
|
||||
struct args_openmount {
|
||||
__u32 devid;
|
||||
};
|
||||
|
||||
struct args_ready {
|
||||
__u32 token;
|
||||
};
|
||||
|
||||
struct args_fail {
|
||||
__u32 token;
|
||||
__s32 status;
|
||||
};
|
||||
|
||||
struct args_setpipefd {
|
||||
__s32 pipefd;
|
||||
};
|
||||
|
||||
struct args_timeout {
|
||||
__u64 timeout;
|
||||
};
|
||||
|
||||
struct args_requester {
|
||||
__u32 uid;
|
||||
__u32 gid;
|
||||
};
|
||||
|
||||
struct args_expire {
|
||||
__u32 how;
|
||||
};
|
||||
|
||||
struct args_askumount {
|
||||
__u32 may_umount;
|
||||
};
|
||||
|
||||
struct args_ismountpoint {
|
||||
union {
|
||||
struct args_in {
|
||||
__u32 type;
|
||||
} in;
|
||||
struct args_out {
|
||||
__u32 devid;
|
||||
__u32 magic;
|
||||
} out;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* All the ioctls use this structure.
|
||||
* When sending a path size must account for the total length
|
||||
* of the chunk of memory otherwise is is the size of the
|
||||
* structure.
|
||||
*/
|
||||
|
||||
struct autofs_dev_ioctl {
|
||||
__u32 ver_major;
|
||||
__u32 ver_minor;
|
||||
__u32 size; /* total size of data passed in
|
||||
* including this struct */
|
||||
__s32 ioctlfd; /* automount command fd */
|
||||
|
||||
/* Command parameters */
|
||||
|
||||
union {
|
||||
struct args_protover protover;
|
||||
struct args_protosubver protosubver;
|
||||
struct args_openmount openmount;
|
||||
struct args_ready ready;
|
||||
struct args_fail fail;
|
||||
struct args_setpipefd setpipefd;
|
||||
struct args_timeout timeout;
|
||||
struct args_requester requester;
|
||||
struct args_expire expire;
|
||||
struct args_askumount askumount;
|
||||
struct args_ismountpoint ismountpoint;
|
||||
};
|
||||
|
||||
char path[0];
|
||||
};
|
||||
|
||||
static __inline__ void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in)
|
||||
{
|
||||
memset(in, 0, AUTOFS_DEV_IOCTL_SIZE);
|
||||
in->ver_major = AUTOFS_DEV_IOCTL_VERSION_MAJOR;
|
||||
in->ver_minor = AUTOFS_DEV_IOCTL_VERSION_MINOR;
|
||||
in->size = AUTOFS_DEV_IOCTL_SIZE;
|
||||
in->ioctlfd = -1;
|
||||
}
|
||||
|
||||
enum {
|
||||
/* Get various version info */
|
||||
AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71,
|
||||
AUTOFS_DEV_IOCTL_PROTOVER_CMD,
|
||||
AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD,
|
||||
|
||||
/* Open mount ioctl fd */
|
||||
AUTOFS_DEV_IOCTL_OPENMOUNT_CMD,
|
||||
|
||||
/* Close mount ioctl fd */
|
||||
AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD,
|
||||
|
||||
/* Mount/expire status returns */
|
||||
AUTOFS_DEV_IOCTL_READY_CMD,
|
||||
AUTOFS_DEV_IOCTL_FAIL_CMD,
|
||||
|
||||
/* Activate/deactivate autofs mount */
|
||||
AUTOFS_DEV_IOCTL_SETPIPEFD_CMD,
|
||||
AUTOFS_DEV_IOCTL_CATATONIC_CMD,
|
||||
|
||||
/* Expiry timeout */
|
||||
AUTOFS_DEV_IOCTL_TIMEOUT_CMD,
|
||||
|
||||
/* Get mount last requesting uid and gid */
|
||||
AUTOFS_DEV_IOCTL_REQUESTER_CMD,
|
||||
|
||||
/* Check for eligible expire candidates */
|
||||
AUTOFS_DEV_IOCTL_EXPIRE_CMD,
|
||||
|
||||
/* Request busy status */
|
||||
AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD,
|
||||
|
||||
/* Check if path is a mountpoint */
|
||||
AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
|
||||
};
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_VERSION \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_PROTOVER \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_PROTOSUBVER \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_OPENMOUNT \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_OPENMOUNT_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_CLOSEMOUNT \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_READY \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_READY_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_FAIL \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_FAIL_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_SETPIPEFD \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_SETPIPEFD_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_CATATONIC \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_CATATONIC_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_TIMEOUT \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_TIMEOUT_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_REQUESTER \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_REQUESTER_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_EXPIRE \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_EXPIRE_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_ASKUMOUNT \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_ISMOUNTPOINT \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD, struct autofs_dev_ioctl)
|
||||
|
||||
#endif /* _LINUX_AUTO_DEV_IOCTL_H */
|
||||
229
ramdisk/initramfs/glibc_riscv64/usr/include/linux/auto_fs.h
Normal file
229
ramdisk/initramfs/glibc_riscv64/usr/include/linux/auto_fs.h
Normal file
@ -0,0 +1,229 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 1997 Transmeta Corporation - All Rights Reserved
|
||||
* Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
|
||||
* Copyright 2005-2006,2013,2017-2018 Ian Kent <raven@themaw.net>
|
||||
*
|
||||
* This file is part of the Linux kernel and is made available under
|
||||
* the terms of the GNU General Public License, version 2, or at your
|
||||
* option, any later version, incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef _LINUX_AUTO_FS_H
|
||||
#define _LINUX_AUTO_FS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/limits.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#define AUTOFS_PROTO_VERSION 5
|
||||
#define AUTOFS_MIN_PROTO_VERSION 3
|
||||
#define AUTOFS_MAX_PROTO_VERSION 5
|
||||
|
||||
#define AUTOFS_PROTO_SUBVERSION 5
|
||||
|
||||
/*
|
||||
* The wait_queue_token (autofs_wqt_t) is part of a structure which is passed
|
||||
* back to the kernel via ioctl from userspace. On architectures where 32- and
|
||||
* 64-bit userspace binaries can be executed it's important that the size of
|
||||
* autofs_wqt_t stays constant between 32- and 64-bit Linux kernels so that we
|
||||
* do not break the binary ABI interface by changing the structure size.
|
||||
*/
|
||||
#if defined(__ia64__) || defined(__alpha__) /* pure 64bit architectures */
|
||||
typedef unsigned long autofs_wqt_t;
|
||||
#else
|
||||
typedef unsigned int autofs_wqt_t;
|
||||
#endif
|
||||
|
||||
/* Packet types */
|
||||
#define autofs_ptype_missing 0 /* Missing entry (mount request) */
|
||||
#define autofs_ptype_expire 1 /* Expire entry (umount request) */
|
||||
|
||||
struct autofs_packet_hdr {
|
||||
int proto_version; /* Protocol version */
|
||||
int type; /* Type of packet */
|
||||
};
|
||||
|
||||
struct autofs_packet_missing {
|
||||
struct autofs_packet_hdr hdr;
|
||||
autofs_wqt_t wait_queue_token;
|
||||
int len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
/* v3 expire (via ioctl) */
|
||||
struct autofs_packet_expire {
|
||||
struct autofs_packet_hdr hdr;
|
||||
int len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
#define AUTOFS_IOCTL 0x93
|
||||
|
||||
enum {
|
||||
AUTOFS_IOC_READY_CMD = 0x60,
|
||||
AUTOFS_IOC_FAIL_CMD,
|
||||
AUTOFS_IOC_CATATONIC_CMD,
|
||||
AUTOFS_IOC_PROTOVER_CMD,
|
||||
AUTOFS_IOC_SETTIMEOUT_CMD,
|
||||
AUTOFS_IOC_EXPIRE_CMD,
|
||||
};
|
||||
|
||||
#define AUTOFS_IOC_READY _IO(AUTOFS_IOCTL, AUTOFS_IOC_READY_CMD)
|
||||
#define AUTOFS_IOC_FAIL _IO(AUTOFS_IOCTL, AUTOFS_IOC_FAIL_CMD)
|
||||
#define AUTOFS_IOC_CATATONIC _IO(AUTOFS_IOCTL, AUTOFS_IOC_CATATONIC_CMD)
|
||||
#define AUTOFS_IOC_PROTOVER _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_PROTOVER_CMD, int)
|
||||
#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_SETTIMEOUT_CMD, \
|
||||
compat_ulong_t)
|
||||
#define AUTOFS_IOC_SETTIMEOUT _IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_SETTIMEOUT_CMD, \
|
||||
unsigned long)
|
||||
#define AUTOFS_IOC_EXPIRE _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_EXPIRE_CMD, \
|
||||
struct autofs_packet_expire)
|
||||
|
||||
/* autofs version 4 and later definitions */
|
||||
|
||||
/* Mask for expire behaviour */
|
||||
#define AUTOFS_EXP_NORMAL 0x00
|
||||
#define AUTOFS_EXP_IMMEDIATE 0x01
|
||||
#define AUTOFS_EXP_LEAVES 0x02
|
||||
#define AUTOFS_EXP_FORCED 0x04
|
||||
|
||||
#define AUTOFS_TYPE_ANY 0U
|
||||
#define AUTOFS_TYPE_INDIRECT 1U
|
||||
#define AUTOFS_TYPE_DIRECT 2U
|
||||
#define AUTOFS_TYPE_OFFSET 4U
|
||||
|
||||
static __inline__ void set_autofs_type_indirect(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_INDIRECT;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_indirect(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_INDIRECT);
|
||||
}
|
||||
|
||||
static __inline__ void set_autofs_type_direct(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_DIRECT;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_direct(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_DIRECT);
|
||||
}
|
||||
|
||||
static __inline__ void set_autofs_type_offset(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_OFFSET;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_offset(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_OFFSET);
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_trigger(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
|
||||
}
|
||||
|
||||
/*
|
||||
* This isn't really a type as we use it to say "no type set" to
|
||||
* indicate we want to search for "any" mount in the
|
||||
* autofs_dev_ioctl_ismountpoint() device ioctl function.
|
||||
*/
|
||||
static __inline__ void set_autofs_type_any(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_ANY;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_any(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_ANY);
|
||||
}
|
||||
|
||||
/* Daemon notification packet types */
|
||||
enum autofs_notify {
|
||||
NFY_NONE,
|
||||
NFY_MOUNT,
|
||||
NFY_EXPIRE
|
||||
};
|
||||
|
||||
/* Kernel protocol version 4 packet types */
|
||||
|
||||
/* Expire entry (umount request) */
|
||||
#define autofs_ptype_expire_multi 2
|
||||
|
||||
/* Kernel protocol version 5 packet types */
|
||||
|
||||
/* Indirect mount missing and expire requests. */
|
||||
#define autofs_ptype_missing_indirect 3
|
||||
#define autofs_ptype_expire_indirect 4
|
||||
|
||||
/* Direct mount missing and expire requests */
|
||||
#define autofs_ptype_missing_direct 5
|
||||
#define autofs_ptype_expire_direct 6
|
||||
|
||||
/* v4 multi expire (via pipe) */
|
||||
struct autofs_packet_expire_multi {
|
||||
struct autofs_packet_hdr hdr;
|
||||
autofs_wqt_t wait_queue_token;
|
||||
int len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
union autofs_packet_union {
|
||||
struct autofs_packet_hdr hdr;
|
||||
struct autofs_packet_missing missing;
|
||||
struct autofs_packet_expire expire;
|
||||
struct autofs_packet_expire_multi expire_multi;
|
||||
};
|
||||
|
||||
/* autofs v5 common packet struct */
|
||||
struct autofs_v5_packet {
|
||||
struct autofs_packet_hdr hdr;
|
||||
autofs_wqt_t wait_queue_token;
|
||||
__u32 dev;
|
||||
__u64 ino;
|
||||
__u32 uid;
|
||||
__u32 gid;
|
||||
__u32 pid;
|
||||
__u32 tgid;
|
||||
__u32 len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
|
||||
|
||||
union autofs_v5_packet_union {
|
||||
struct autofs_packet_hdr hdr;
|
||||
struct autofs_v5_packet v5_packet;
|
||||
autofs_packet_missing_indirect_t missing_indirect;
|
||||
autofs_packet_expire_indirect_t expire_indirect;
|
||||
autofs_packet_missing_direct_t missing_direct;
|
||||
autofs_packet_expire_direct_t expire_direct;
|
||||
};
|
||||
|
||||
enum {
|
||||
AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66, /* AUTOFS_IOC_EXPIRE_CMD + 1 */
|
||||
AUTOFS_IOC_PROTOSUBVER_CMD,
|
||||
AUTOFS_IOC_ASKUMOUNT_CMD = 0x70, /* AUTOFS_DEV_IOCTL_VERSION_CMD - 1 */
|
||||
};
|
||||
|
||||
#define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_EXPIRE_MULTI_CMD, int)
|
||||
#define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_PROTOSUBVER_CMD, int)
|
||||
#define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_ASKUMOUNT_CMD, int)
|
||||
|
||||
#endif /* _LINUX_AUTO_FS_H */
|
||||
15
ramdisk/initramfs/glibc_riscv64/usr/include/linux/auto_fs4.h
Normal file
15
ramdisk/initramfs/glibc_riscv64/usr/include/linux/auto_fs4.h
Normal file
@ -0,0 +1,15 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
|
||||
*
|
||||
* This file is part of the Linux kernel and is made available under
|
||||
* the terms of the GNU General Public License, version 2, or at your
|
||||
* option, any later version, incorporated herein by reference.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_AUTO_FS4_H
|
||||
#define _LINUX_AUTO_FS4_H
|
||||
|
||||
#include <linux/auto_fs.h>
|
||||
|
||||
#endif /* _LINUX_AUTO_FS4_H */
|
||||
37
ramdisk/initramfs/glibc_riscv64/usr/include/linux/auxvec.h
Normal file
37
ramdisk/initramfs/glibc_riscv64/usr/include/linux/auxvec.h
Normal file
@ -0,0 +1,37 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_AUXVEC_H
|
||||
#define _LINUX_AUXVEC_H
|
||||
|
||||
#include <asm/auxvec.h>
|
||||
|
||||
/* Symbolic values for the entries in the auxiliary table
|
||||
put on the initial stack */
|
||||
#define AT_NULL 0 /* end of vector */
|
||||
#define AT_IGNORE 1 /* entry should be ignored */
|
||||
#define AT_EXECFD 2 /* file descriptor of program */
|
||||
#define AT_PHDR 3 /* program headers for program */
|
||||
#define AT_PHENT 4 /* size of program header entry */
|
||||
#define AT_PHNUM 5 /* number of program headers */
|
||||
#define AT_PAGESZ 6 /* system page size */
|
||||
#define AT_BASE 7 /* base address of interpreter */
|
||||
#define AT_FLAGS 8 /* flags */
|
||||
#define AT_ENTRY 9 /* entry point of program */
|
||||
#define AT_NOTELF 10 /* program is not ELF */
|
||||
#define AT_UID 11 /* real uid */
|
||||
#define AT_EUID 12 /* effective uid */
|
||||
#define AT_GID 13 /* real gid */
|
||||
#define AT_EGID 14 /* effective gid */
|
||||
#define AT_PLATFORM 15 /* string identifying CPU for optimizations */
|
||||
#define AT_HWCAP 16 /* arch dependent hints at CPU capabilities */
|
||||
#define AT_CLKTCK 17 /* frequency at which times() increments */
|
||||
/* AT_* values 18 through 22 are reserved */
|
||||
#define AT_SECURE 23 /* secure mode boolean */
|
||||
#define AT_BASE_PLATFORM 24 /* string identifying real platform, may
|
||||
* differ from AT_PLATFORM. */
|
||||
#define AT_RANDOM 25 /* address of 16 random bytes */
|
||||
#define AT_HWCAP2 26 /* extension of AT_HWCAP */
|
||||
|
||||
#define AT_EXECFN 31 /* filename of program */
|
||||
|
||||
|
||||
#endif /* _LINUX_AUXVEC_H */
|
||||
117
ramdisk/initramfs/glibc_riscv64/usr/include/linux/ax25.h
Normal file
117
ramdisk/initramfs/glibc_riscv64/usr/include/linux/ax25.h
Normal file
@ -0,0 +1,117 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* These are the public elements of the Linux kernel AX.25 code. A similar
|
||||
* file netrom.h exists for the NET/ROM protocol.
|
||||
*/
|
||||
|
||||
#ifndef AX25_KERNEL_H
|
||||
#define AX25_KERNEL_H
|
||||
|
||||
#include <linux/socket.h>
|
||||
|
||||
#define AX25_MTU 256
|
||||
#define AX25_MAX_DIGIS 8
|
||||
|
||||
#define AX25_WINDOW 1
|
||||
#define AX25_T1 2
|
||||
#define AX25_N2 3
|
||||
#define AX25_T3 4
|
||||
#define AX25_T2 5
|
||||
#define AX25_BACKOFF 6
|
||||
#define AX25_EXTSEQ 7
|
||||
#define AX25_PIDINCL 8
|
||||
#define AX25_IDLE 9
|
||||
#define AX25_PACLEN 10
|
||||
#define AX25_IAMDIGI 12
|
||||
|
||||
#define AX25_KILL 99
|
||||
|
||||
#define SIOCAX25GETUID (SIOCPROTOPRIVATE+0)
|
||||
#define SIOCAX25ADDUID (SIOCPROTOPRIVATE+1)
|
||||
#define SIOCAX25DELUID (SIOCPROTOPRIVATE+2)
|
||||
#define SIOCAX25NOUID (SIOCPROTOPRIVATE+3)
|
||||
#define SIOCAX25OPTRT (SIOCPROTOPRIVATE+7)
|
||||
#define SIOCAX25CTLCON (SIOCPROTOPRIVATE+8)
|
||||
#define SIOCAX25GETINFOOLD (SIOCPROTOPRIVATE+9)
|
||||
#define SIOCAX25ADDFWD (SIOCPROTOPRIVATE+10)
|
||||
#define SIOCAX25DELFWD (SIOCPROTOPRIVATE+11)
|
||||
#define SIOCAX25DEVCTL (SIOCPROTOPRIVATE+12)
|
||||
#define SIOCAX25GETINFO (SIOCPROTOPRIVATE+13)
|
||||
|
||||
#define AX25_SET_RT_IPMODE 2
|
||||
|
||||
#define AX25_NOUID_DEFAULT 0
|
||||
#define AX25_NOUID_BLOCK 1
|
||||
|
||||
typedef struct {
|
||||
char ax25_call[7]; /* 6 call + SSID (shifted ascii!) */
|
||||
} ax25_address;
|
||||
|
||||
struct sockaddr_ax25 {
|
||||
__kernel_sa_family_t sax25_family;
|
||||
ax25_address sax25_call;
|
||||
int sax25_ndigis;
|
||||
/* Digipeater ax25_address sets follow */
|
||||
};
|
||||
|
||||
#define sax25_uid sax25_ndigis
|
||||
|
||||
struct full_sockaddr_ax25 {
|
||||
struct sockaddr_ax25 fsa_ax25;
|
||||
ax25_address fsa_digipeater[AX25_MAX_DIGIS];
|
||||
};
|
||||
|
||||
struct ax25_routes_struct {
|
||||
ax25_address port_addr;
|
||||
ax25_address dest_addr;
|
||||
unsigned char digi_count;
|
||||
ax25_address digi_addr[AX25_MAX_DIGIS];
|
||||
};
|
||||
|
||||
struct ax25_route_opt_struct {
|
||||
ax25_address port_addr;
|
||||
ax25_address dest_addr;
|
||||
int cmd;
|
||||
int arg;
|
||||
};
|
||||
|
||||
struct ax25_ctl_struct {
|
||||
ax25_address port_addr;
|
||||
ax25_address source_addr;
|
||||
ax25_address dest_addr;
|
||||
unsigned int cmd;
|
||||
unsigned long arg;
|
||||
unsigned char digi_count;
|
||||
ax25_address digi_addr[AX25_MAX_DIGIS];
|
||||
};
|
||||
|
||||
/* this will go away. Please do not export to user land */
|
||||
struct ax25_info_struct_deprecated {
|
||||
unsigned int n2, n2count;
|
||||
unsigned int t1, t1timer;
|
||||
unsigned int t2, t2timer;
|
||||
unsigned int t3, t3timer;
|
||||
unsigned int idle, idletimer;
|
||||
unsigned int state;
|
||||
unsigned int rcv_q, snd_q;
|
||||
};
|
||||
|
||||
struct ax25_info_struct {
|
||||
unsigned int n2, n2count;
|
||||
unsigned int t1, t1timer;
|
||||
unsigned int t2, t2timer;
|
||||
unsigned int t3, t3timer;
|
||||
unsigned int idle, idletimer;
|
||||
unsigned int state;
|
||||
unsigned int rcv_q, snd_q;
|
||||
unsigned int vs, vr, va, vs_max;
|
||||
unsigned int paclen;
|
||||
unsigned int window;
|
||||
};
|
||||
|
||||
struct ax25_fwd_struct {
|
||||
ax25_address port_from;
|
||||
ax25_address port_to;
|
||||
};
|
||||
|
||||
#endif
|
||||
74
ramdisk/initramfs/glibc_riscv64/usr/include/linux/b1lli.h
Normal file
74
ramdisk/initramfs/glibc_riscv64/usr/include/linux/b1lli.h
Normal file
@ -0,0 +1,74 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* $Id: b1lli.h,v 1.8.8.3 2001/09/23 22:25:05 kai Exp $
|
||||
*
|
||||
* ISDN lowlevel-module for AVM B1-card.
|
||||
*
|
||||
* Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de)
|
||||
*
|
||||
* This software may be used and distributed according to the terms
|
||||
* of the GNU General Public License, incorporated herein by reference.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _B1LLI_H_
|
||||
#define _B1LLI_H_
|
||||
/*
|
||||
* struct for loading t4 file
|
||||
*/
|
||||
typedef struct avmb1_t4file {
|
||||
int len;
|
||||
unsigned char *data;
|
||||
} avmb1_t4file;
|
||||
|
||||
typedef struct avmb1_loaddef {
|
||||
int contr;
|
||||
avmb1_t4file t4file;
|
||||
} avmb1_loaddef;
|
||||
|
||||
typedef struct avmb1_loadandconfigdef {
|
||||
int contr;
|
||||
avmb1_t4file t4file;
|
||||
avmb1_t4file t4config;
|
||||
} avmb1_loadandconfigdef;
|
||||
|
||||
typedef struct avmb1_resetdef {
|
||||
int contr;
|
||||
} avmb1_resetdef;
|
||||
|
||||
typedef struct avmb1_getdef {
|
||||
int contr;
|
||||
int cardtype;
|
||||
int cardstate;
|
||||
} avmb1_getdef;
|
||||
|
||||
/*
|
||||
* struct for adding new cards
|
||||
*/
|
||||
typedef struct avmb1_carddef {
|
||||
int port;
|
||||
int irq;
|
||||
} avmb1_carddef;
|
||||
|
||||
#define AVM_CARDTYPE_B1 0
|
||||
#define AVM_CARDTYPE_T1 1
|
||||
#define AVM_CARDTYPE_M1 2
|
||||
#define AVM_CARDTYPE_M2 3
|
||||
|
||||
typedef struct avmb1_extcarddef {
|
||||
int port;
|
||||
int irq;
|
||||
int cardtype;
|
||||
int cardnr; /* for HEMA/T1 */
|
||||
} avmb1_extcarddef;
|
||||
|
||||
#define AVMB1_LOAD 0 /* load image to card */
|
||||
#define AVMB1_ADDCARD 1 /* add a new card - OBSOLETE */
|
||||
#define AVMB1_RESETCARD 2 /* reset a card */
|
||||
#define AVMB1_LOAD_AND_CONFIG 3 /* load image and config to card */
|
||||
#define AVMB1_ADDCARD_WITH_TYPE 4 /* add a new card, with cardtype */
|
||||
#define AVMB1_GET_CARDINFO 5 /* get cardtype */
|
||||
#define AVMB1_REMOVECARD 6 /* remove a card - OBSOLETE */
|
||||
|
||||
#define AVMB1_REGISTERCARD_IS_OBSOLETE
|
||||
|
||||
#endif /* _B1LLI_H_ */
|
||||
@ -0,0 +1,631 @@
|
||||
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) */
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_BATADV_PACKET_H_
|
||||
#define _LINUX_BATADV_PACKET_H_
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* batadv_tp_is_error() - Check throughput meter return code for error
|
||||
* @n: throughput meter return code
|
||||
*
|
||||
* Return: 0 when not error was detected, != 0 otherwise
|
||||
*/
|
||||
#define batadv_tp_is_error(n) ((__u8)(n) > 127 ? 1 : 0)
|
||||
|
||||
/**
|
||||
* enum batadv_packettype - types for batman-adv encapsulated packets
|
||||
* @BATADV_IV_OGM: originator messages for B.A.T.M.A.N. IV
|
||||
* @BATADV_BCAST: broadcast packets carrying broadcast payload
|
||||
* @BATADV_CODED: network coded packets
|
||||
* @BATADV_ELP: echo location packets for B.A.T.M.A.N. V
|
||||
* @BATADV_OGM2: originator messages for B.A.T.M.A.N. V
|
||||
*
|
||||
* @BATADV_UNICAST: unicast packets carrying unicast payload traffic
|
||||
* @BATADV_UNICAST_FRAG: unicast packets carrying a fragment of the original
|
||||
* payload packet
|
||||
* @BATADV_UNICAST_4ADDR: unicast packet including the originator address of
|
||||
* the sender
|
||||
* @BATADV_ICMP: unicast packet like IP ICMP used for ping or traceroute
|
||||
* @BATADV_UNICAST_TVLV: unicast packet carrying TVLV containers
|
||||
*/
|
||||
enum batadv_packettype {
|
||||
/* 0x00 - 0x3f: local packets or special rules for handling */
|
||||
BATADV_IV_OGM = 0x00,
|
||||
BATADV_BCAST = 0x01,
|
||||
BATADV_CODED = 0x02,
|
||||
BATADV_ELP = 0x03,
|
||||
BATADV_OGM2 = 0x04,
|
||||
/* 0x40 - 0x7f: unicast */
|
||||
#define BATADV_UNICAST_MIN 0x40
|
||||
BATADV_UNICAST = 0x40,
|
||||
BATADV_UNICAST_FRAG = 0x41,
|
||||
BATADV_UNICAST_4ADDR = 0x42,
|
||||
BATADV_ICMP = 0x43,
|
||||
BATADV_UNICAST_TVLV = 0x44,
|
||||
#define BATADV_UNICAST_MAX 0x7f
|
||||
/* 0x80 - 0xff: reserved */
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_subtype - packet subtype for unicast4addr
|
||||
* @BATADV_P_DATA: user payload
|
||||
* @BATADV_P_DAT_DHT_GET: DHT request message
|
||||
* @BATADV_P_DAT_DHT_PUT: DHT store message
|
||||
* @BATADV_P_DAT_CACHE_REPLY: ARP reply generated by DAT
|
||||
*/
|
||||
enum batadv_subtype {
|
||||
BATADV_P_DATA = 0x01,
|
||||
BATADV_P_DAT_DHT_GET = 0x02,
|
||||
BATADV_P_DAT_DHT_PUT = 0x03,
|
||||
BATADV_P_DAT_CACHE_REPLY = 0x04,
|
||||
};
|
||||
|
||||
/* this file is included by batctl which needs these defines */
|
||||
#define BATADV_COMPAT_VERSION 15
|
||||
|
||||
/**
|
||||
* enum batadv_iv_flags - flags used in B.A.T.M.A.N. IV OGM packets
|
||||
* @BATADV_NOT_BEST_NEXT_HOP: flag is set when ogm packet is forwarded and was
|
||||
* previously received from someone else than the best neighbor.
|
||||
* @BATADV_PRIMARIES_FIRST_HOP: flag unused.
|
||||
* @BATADV_DIRECTLINK: flag is for the first hop or if rebroadcasted from a
|
||||
* one hop neighbor on the interface where it was originally received.
|
||||
*/
|
||||
enum batadv_iv_flags {
|
||||
BATADV_NOT_BEST_NEXT_HOP = 1UL << 0,
|
||||
BATADV_PRIMARIES_FIRST_HOP = 1UL << 1,
|
||||
BATADV_DIRECTLINK = 1UL << 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_icmp_packettype - ICMP message types
|
||||
* @BATADV_ECHO_REPLY: success reply to BATADV_ECHO_REQUEST
|
||||
* @BATADV_DESTINATION_UNREACHABLE: failure when route to destination not found
|
||||
* @BATADV_ECHO_REQUEST: request BATADV_ECHO_REPLY from destination
|
||||
* @BATADV_TTL_EXCEEDED: error after BATADV_ECHO_REQUEST traversed too many hops
|
||||
* @BATADV_PARAMETER_PROBLEM: return code for malformed messages
|
||||
* @BATADV_TP: throughput meter packet
|
||||
*/
|
||||
enum batadv_icmp_packettype {
|
||||
BATADV_ECHO_REPLY = 0,
|
||||
BATADV_DESTINATION_UNREACHABLE = 3,
|
||||
BATADV_ECHO_REQUEST = 8,
|
||||
BATADV_TTL_EXCEEDED = 11,
|
||||
BATADV_PARAMETER_PROBLEM = 12,
|
||||
BATADV_TP = 15,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_mcast_flags - flags for multicast capabilities and settings
|
||||
* @BATADV_MCAST_WANT_ALL_UNSNOOPABLES: we want all packets destined for
|
||||
* 224.0.0.0/24 or ff02::1
|
||||
* @BATADV_MCAST_WANT_ALL_IPV4: we want all IPv4 multicast packets
|
||||
* (both link-local and routable ones)
|
||||
* @BATADV_MCAST_WANT_ALL_IPV6: we want all IPv6 multicast packets
|
||||
* (both link-local and routable ones)
|
||||
* @BATADV_MCAST_WANT_NO_RTR4: we have no IPv4 multicast router and therefore
|
||||
* only need routable IPv4 multicast packets we signed up for explicitly
|
||||
* @BATADV_MCAST_WANT_NO_RTR6: we have no IPv6 multicast router and therefore
|
||||
* only need routable IPv6 multicast packets we signed up for explicitly
|
||||
*/
|
||||
enum batadv_mcast_flags {
|
||||
BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0,
|
||||
BATADV_MCAST_WANT_ALL_IPV4 = 1UL << 1,
|
||||
BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2,
|
||||
BATADV_MCAST_WANT_NO_RTR4 = 1UL << 3,
|
||||
BATADV_MCAST_WANT_NO_RTR6 = 1UL << 4,
|
||||
};
|
||||
|
||||
/* tt data subtypes */
|
||||
#define BATADV_TT_DATA_TYPE_MASK 0x0F
|
||||
|
||||
/**
|
||||
* enum batadv_tt_data_flags - flags for tt data tvlv
|
||||
* @BATADV_TT_OGM_DIFF: TT diff propagated through OGM
|
||||
* @BATADV_TT_REQUEST: TT request message
|
||||
* @BATADV_TT_RESPONSE: TT response message
|
||||
* @BATADV_TT_FULL_TABLE: contains full table to replace existing table
|
||||
*/
|
||||
enum batadv_tt_data_flags {
|
||||
BATADV_TT_OGM_DIFF = 1UL << 0,
|
||||
BATADV_TT_REQUEST = 1UL << 1,
|
||||
BATADV_TT_RESPONSE = 1UL << 2,
|
||||
BATADV_TT_FULL_TABLE = 1UL << 4,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_vlan_flags - flags for the four MSB of any vlan ID field
|
||||
* @BATADV_VLAN_HAS_TAG: whether the field contains a valid vlan tag or not
|
||||
*/
|
||||
enum batadv_vlan_flags {
|
||||
BATADV_VLAN_HAS_TAG = 1UL << 15,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_bla_claimframe - claim frame types for the bridge loop avoidance
|
||||
* @BATADV_CLAIM_TYPE_CLAIM: claim of a client mac address
|
||||
* @BATADV_CLAIM_TYPE_UNCLAIM: unclaim of a client mac address
|
||||
* @BATADV_CLAIM_TYPE_ANNOUNCE: announcement of backbone with current crc
|
||||
* @BATADV_CLAIM_TYPE_REQUEST: request of full claim table
|
||||
* @BATADV_CLAIM_TYPE_LOOPDETECT: mesh-traversing loop detect packet
|
||||
*/
|
||||
enum batadv_bla_claimframe {
|
||||
BATADV_CLAIM_TYPE_CLAIM = 0x00,
|
||||
BATADV_CLAIM_TYPE_UNCLAIM = 0x01,
|
||||
BATADV_CLAIM_TYPE_ANNOUNCE = 0x02,
|
||||
BATADV_CLAIM_TYPE_REQUEST = 0x03,
|
||||
BATADV_CLAIM_TYPE_LOOPDETECT = 0x04,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_tvlv_type - tvlv type definitions
|
||||
* @BATADV_TVLV_GW: gateway tvlv
|
||||
* @BATADV_TVLV_DAT: distributed arp table tvlv
|
||||
* @BATADV_TVLV_NC: network coding tvlv
|
||||
* @BATADV_TVLV_TT: translation table tvlv
|
||||
* @BATADV_TVLV_ROAM: roaming advertisement tvlv
|
||||
* @BATADV_TVLV_MCAST: multicast capability tvlv
|
||||
*/
|
||||
enum batadv_tvlv_type {
|
||||
BATADV_TVLV_GW = 0x01,
|
||||
BATADV_TVLV_DAT = 0x02,
|
||||
BATADV_TVLV_NC = 0x03,
|
||||
BATADV_TVLV_TT = 0x04,
|
||||
BATADV_TVLV_ROAM = 0x05,
|
||||
BATADV_TVLV_MCAST = 0x06,
|
||||
};
|
||||
|
||||
#pragma pack(2)
|
||||
/* the destination hardware field in the ARP frame is used to
|
||||
* transport the claim type and the group id
|
||||
*/
|
||||
struct batadv_bla_claim_dst {
|
||||
__u8 magic[3]; /* FF:43:05 */
|
||||
__u8 type; /* bla_claimframe */
|
||||
__be16 group; /* group id */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_ogm_packet - ogm (routing protocol) packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @flags: contains routing relevant flags - see enum batadv_iv_flags
|
||||
* @seqno: sequence identification
|
||||
* @orig: address of the source node
|
||||
* @prev_sender: address of the previous sender
|
||||
* @reserved: reserved byte for alignment
|
||||
* @tq: transmission quality
|
||||
* @tvlv_len: length of tvlv data following the ogm header
|
||||
*/
|
||||
struct batadv_ogm_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 flags;
|
||||
__be32 seqno;
|
||||
__u8 orig[ETH_ALEN];
|
||||
__u8 prev_sender[ETH_ALEN];
|
||||
__u8 reserved;
|
||||
__u8 tq;
|
||||
__be16 tvlv_len;
|
||||
};
|
||||
|
||||
#define BATADV_OGM_HLEN sizeof(struct batadv_ogm_packet)
|
||||
|
||||
/**
|
||||
* struct batadv_ogm2_packet - ogm2 (routing protocol) packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the general header
|
||||
* @ttl: time to live for this packet, part of the general header
|
||||
* @flags: reserved for routing relevant flags - currently always 0
|
||||
* @seqno: sequence number
|
||||
* @orig: originator mac address
|
||||
* @tvlv_len: length of the appended tvlv buffer (in bytes)
|
||||
* @throughput: the currently flooded path throughput
|
||||
*/
|
||||
struct batadv_ogm2_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 flags;
|
||||
__be32 seqno;
|
||||
__u8 orig[ETH_ALEN];
|
||||
__be16 tvlv_len;
|
||||
__be32 throughput;
|
||||
};
|
||||
|
||||
#define BATADV_OGM2_HLEN sizeof(struct batadv_ogm2_packet)
|
||||
|
||||
/**
|
||||
* struct batadv_elp_packet - elp (neighbor discovery) packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @orig: originator mac address
|
||||
* @seqno: sequence number
|
||||
* @elp_interval: currently used ELP sending interval in ms
|
||||
*/
|
||||
struct batadv_elp_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 orig[ETH_ALEN];
|
||||
__be32 seqno;
|
||||
__be32 elp_interval;
|
||||
};
|
||||
|
||||
#define BATADV_ELP_HLEN sizeof(struct batadv_elp_packet)
|
||||
|
||||
/**
|
||||
* struct batadv_icmp_header - common members among all the ICMP packets
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @msg_type: ICMP packet type
|
||||
* @dst: address of the destination node
|
||||
* @orig: address of the source node
|
||||
* @uid: local ICMP socket identifier
|
||||
* @align: not used - useful for alignment purposes only
|
||||
*
|
||||
* This structure is used for ICMP packets parsing only and it is never sent
|
||||
* over the wire. The alignment field at the end is there to ensure that
|
||||
* members are padded the same way as they are in real packets.
|
||||
*/
|
||||
struct batadv_icmp_header {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 msg_type; /* see ICMP message types above */
|
||||
__u8 dst[ETH_ALEN];
|
||||
__u8 orig[ETH_ALEN];
|
||||
__u8 uid;
|
||||
__u8 align[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_icmp_packet - ICMP packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @msg_type: ICMP packet type
|
||||
* @dst: address of the destination node
|
||||
* @orig: address of the source node
|
||||
* @uid: local ICMP socket identifier
|
||||
* @reserved: not used - useful for alignment
|
||||
* @seqno: ICMP sequence number
|
||||
*/
|
||||
struct batadv_icmp_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 msg_type; /* see ICMP message types above */
|
||||
__u8 dst[ETH_ALEN];
|
||||
__u8 orig[ETH_ALEN];
|
||||
__u8 uid;
|
||||
__u8 reserved;
|
||||
__be16 seqno;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_icmp_tp_packet - ICMP TP Meter packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @msg_type: ICMP packet type
|
||||
* @dst: address of the destination node
|
||||
* @orig: address of the source node
|
||||
* @uid: local ICMP socket identifier
|
||||
* @subtype: TP packet subtype (see batadv_icmp_tp_subtype)
|
||||
* @session: TP session identifier
|
||||
* @seqno: the TP sequence number
|
||||
* @timestamp: time when the packet has been sent. This value is filled in a
|
||||
* TP_MSG and echoed back in the next TP_ACK so that the sender can compute the
|
||||
* RTT. Since it is read only by the host which wrote it, there is no need to
|
||||
* store it using network order
|
||||
*/
|
||||
struct batadv_icmp_tp_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 msg_type; /* see ICMP message types above */
|
||||
__u8 dst[ETH_ALEN];
|
||||
__u8 orig[ETH_ALEN];
|
||||
__u8 uid;
|
||||
__u8 subtype;
|
||||
__u8 session[2];
|
||||
__be32 seqno;
|
||||
__be32 timestamp;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_icmp_tp_subtype - ICMP TP Meter packet subtypes
|
||||
* @BATADV_TP_MSG: Msg from sender to receiver
|
||||
* @BATADV_TP_ACK: acknowledgment from receiver to sender
|
||||
*/
|
||||
enum batadv_icmp_tp_subtype {
|
||||
BATADV_TP_MSG = 0,
|
||||
BATADV_TP_ACK,
|
||||
};
|
||||
|
||||
#define BATADV_RR_LEN 16
|
||||
|
||||
/**
|
||||
* struct batadv_icmp_packet_rr - ICMP RouteRecord packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @msg_type: ICMP packet type
|
||||
* @dst: address of the destination node
|
||||
* @orig: address of the source node
|
||||
* @uid: local ICMP socket identifier
|
||||
* @rr_cur: number of entries the rr array
|
||||
* @seqno: ICMP sequence number
|
||||
* @rr: route record array
|
||||
*/
|
||||
struct batadv_icmp_packet_rr {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 msg_type; /* see ICMP message types above */
|
||||
__u8 dst[ETH_ALEN];
|
||||
__u8 orig[ETH_ALEN];
|
||||
__u8 uid;
|
||||
__u8 rr_cur;
|
||||
__be16 seqno;
|
||||
__u8 rr[BATADV_RR_LEN][ETH_ALEN];
|
||||
};
|
||||
|
||||
#define BATADV_ICMP_MAX_PACKET_SIZE sizeof(struct batadv_icmp_packet_rr)
|
||||
|
||||
/* All packet headers in front of an ethernet header have to be completely
|
||||
* divisible by 2 but not by 4 to make the payload after the ethernet
|
||||
* header again 4 bytes boundary aligned.
|
||||
*
|
||||
* A packing of 2 is necessary to avoid extra padding at the end of the struct
|
||||
* caused by a structure member which is larger than two bytes. Otherwise
|
||||
* the structure would not fulfill the previously mentioned rule to avoid the
|
||||
* misalignment of the payload after the ethernet header. It may also lead to
|
||||
* leakage of information when the padding it not initialized before sending.
|
||||
*/
|
||||
|
||||
/**
|
||||
* struct batadv_unicast_packet - unicast packet for network payload
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @ttvn: translation table version number
|
||||
* @dest: originator destination of the unicast packet
|
||||
*/
|
||||
struct batadv_unicast_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 ttvn; /* destination translation table version number */
|
||||
__u8 dest[ETH_ALEN];
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_unicast_4addr_packet - extended unicast packet
|
||||
* @u: common unicast packet header
|
||||
* @src: address of the source
|
||||
* @subtype: packet subtype
|
||||
* @reserved: reserved byte for alignment
|
||||
*/
|
||||
struct batadv_unicast_4addr_packet {
|
||||
struct batadv_unicast_packet u;
|
||||
__u8 src[ETH_ALEN];
|
||||
__u8 subtype;
|
||||
__u8 reserved;
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_frag_packet - fragmented packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @dest: final destination used when routing fragments
|
||||
* @orig: originator of the fragment used when merging the packet
|
||||
* @no: fragment number within this sequence
|
||||
* @priority: priority of frame, from ToS IP precedence or 802.1p
|
||||
* @reserved: reserved byte for alignment
|
||||
* @seqno: sequence identification
|
||||
* @total_size: size of the merged packet
|
||||
*/
|
||||
struct batadv_frag_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version; /* batman version field */
|
||||
__u8 ttl;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 no:4;
|
||||
__u8 priority:3;
|
||||
__u8 reserved:1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 reserved:1;
|
||||
__u8 priority:3;
|
||||
__u8 no:4;
|
||||
#else
|
||||
#error "unknown bitfield endianness"
|
||||
#endif
|
||||
__u8 dest[ETH_ALEN];
|
||||
__u8 orig[ETH_ALEN];
|
||||
__be16 seqno;
|
||||
__be16 total_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_bcast_packet - broadcast packet for network payload
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @reserved: reserved byte for alignment
|
||||
* @seqno: sequence identification
|
||||
* @orig: originator of the broadcast packet
|
||||
*/
|
||||
struct batadv_bcast_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version; /* batman version field */
|
||||
__u8 ttl;
|
||||
__u8 reserved;
|
||||
__be32 seqno;
|
||||
__u8 orig[ETH_ALEN];
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_coded_packet - network coded packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @first_source: original source of first included packet
|
||||
* @first_orig_dest: original destinal of first included packet
|
||||
* @first_crc: checksum of first included packet
|
||||
* @first_ttvn: tt-version number of first included packet
|
||||
* @second_ttl: ttl of second packet
|
||||
* @second_dest: second receiver of this coded packet
|
||||
* @second_source: original source of second included packet
|
||||
* @second_orig_dest: original destination of second included packet
|
||||
* @second_crc: checksum of second included packet
|
||||
* @second_ttvn: tt version number of second included packet
|
||||
* @coded_len: length of network coded part of the payload
|
||||
*/
|
||||
struct batadv_coded_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version; /* batman version field */
|
||||
__u8 ttl;
|
||||
__u8 first_ttvn;
|
||||
/* __u8 first_dest[ETH_ALEN]; - saved in mac header destination */
|
||||
__u8 first_source[ETH_ALEN];
|
||||
__u8 first_orig_dest[ETH_ALEN];
|
||||
__be32 first_crc;
|
||||
__u8 second_ttl;
|
||||
__u8 second_ttvn;
|
||||
__u8 second_dest[ETH_ALEN];
|
||||
__u8 second_source[ETH_ALEN];
|
||||
__u8 second_orig_dest[ETH_ALEN];
|
||||
__be32 second_crc;
|
||||
__be16 coded_len;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_unicast_tvlv_packet - generic unicast packet with tvlv payload
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the genereal header
|
||||
* @ttl: time to live for this packet, part of the genereal header
|
||||
* @reserved: reserved field (for packet alignment)
|
||||
* @src: address of the source
|
||||
* @dst: address of the destination
|
||||
* @tvlv_len: length of tvlv data following the unicast tvlv header
|
||||
* @align: 2 bytes to align the header to a 4 byte boundary
|
||||
*/
|
||||
struct batadv_unicast_tvlv_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version; /* batman version field */
|
||||
__u8 ttl;
|
||||
__u8 reserved;
|
||||
__u8 dst[ETH_ALEN];
|
||||
__u8 src[ETH_ALEN];
|
||||
__be16 tvlv_len;
|
||||
__u16 align;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_hdr - base tvlv header struct
|
||||
* @type: tvlv container type (see batadv_tvlv_type)
|
||||
* @version: tvlv container version
|
||||
* @len: tvlv container length
|
||||
*/
|
||||
struct batadv_tvlv_hdr {
|
||||
__u8 type;
|
||||
__u8 version;
|
||||
__be16 len;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_gateway_data - gateway data propagated through gw tvlv
|
||||
* container
|
||||
* @bandwidth_down: advertised uplink download bandwidth
|
||||
* @bandwidth_up: advertised uplink upload bandwidth
|
||||
*/
|
||||
struct batadv_tvlv_gateway_data {
|
||||
__be32 bandwidth_down;
|
||||
__be32 bandwidth_up;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_data - tt data propagated through the tt tvlv container
|
||||
* @flags: translation table flags (see batadv_tt_data_flags)
|
||||
* @ttvn: translation table version number
|
||||
* @num_vlan: number of announced VLANs. In the TVLV this struct is followed by
|
||||
* one batadv_tvlv_tt_vlan_data object per announced vlan
|
||||
*/
|
||||
struct batadv_tvlv_tt_data {
|
||||
__u8 flags;
|
||||
__u8 ttvn;
|
||||
__be16 num_vlan;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_vlan_data - vlan specific tt data propagated through
|
||||
* the tt tvlv container
|
||||
* @crc: crc32 checksum of the entries belonging to this vlan
|
||||
* @vid: vlan identifier
|
||||
* @reserved: unused, useful for alignment purposes
|
||||
*/
|
||||
struct batadv_tvlv_tt_vlan_data {
|
||||
__be32 crc;
|
||||
__be16 vid;
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_tt_change - translation table diff data
|
||||
* @flags: status indicators concerning the non-mesh client (see
|
||||
* batadv_tt_client_flags)
|
||||
* @reserved: reserved field - useful for alignment purposes only
|
||||
* @addr: mac address of non-mesh client that triggered this tt change
|
||||
* @vid: VLAN identifier
|
||||
*/
|
||||
struct batadv_tvlv_tt_change {
|
||||
__u8 flags;
|
||||
__u8 reserved[3];
|
||||
__u8 addr[ETH_ALEN];
|
||||
__be16 vid;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_roam_adv - roaming advertisement
|
||||
* @client: mac address of roaming client
|
||||
* @vid: VLAN identifier
|
||||
*/
|
||||
struct batadv_tvlv_roam_adv {
|
||||
__u8 client[ETH_ALEN];
|
||||
__be16 vid;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_mcast_data - payload of a multicast tvlv
|
||||
* @flags: multicast flags announced by the orig node
|
||||
* @reserved: reserved field
|
||||
*/
|
||||
struct batadv_tvlv_mcast_data {
|
||||
__u8 flags;
|
||||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* _LINUX_BATADV_PACKET_H_ */
|
||||
677
ramdisk/initramfs/glibc_riscv64/usr/include/linux/batman_adv.h
Normal file
677
ramdisk/initramfs/glibc_riscv64/usr/include/linux/batman_adv.h
Normal file
@ -0,0 +1,677 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
/* Copyright (C) 2016-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Matthias Schiffer
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_BATMAN_ADV_H_
|
||||
#define _LINUX_BATMAN_ADV_H_
|
||||
|
||||
#define BATADV_NL_NAME "batadv"
|
||||
|
||||
#define BATADV_NL_MCAST_GROUP_CONFIG "config"
|
||||
#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
|
||||
|
||||
/**
|
||||
* enum batadv_tt_client_flags - TT client specific flags
|
||||
*
|
||||
* Bits from 0 to 7 are called _remote flags_ because they are sent on the wire.
|
||||
* Bits from 8 to 15 are called _local flags_ because they are used for local
|
||||
* computations only.
|
||||
*
|
||||
* Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with
|
||||
* the other nodes in the network. To achieve this goal these flags are included
|
||||
* in the TT CRC computation.
|
||||
*/
|
||||
enum batadv_tt_client_flags {
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
|
||||
*/
|
||||
BATADV_TT_CLIENT_DEL = (1 << 0),
|
||||
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and
|
||||
* the new update telling its new real location has not been
|
||||
* received/sent yet
|
||||
*/
|
||||
BATADV_TT_CLIENT_ROAM = (1 << 1),
|
||||
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi
|
||||
* interface. This information is used by the "AP Isolation" feature
|
||||
*/
|
||||
BATADV_TT_CLIENT_WIFI = (1 << 4),
|
||||
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
|
||||
* information is used by the Extended Isolation feature
|
||||
*/
|
||||
BATADV_TT_CLIENT_ISOLA = (1 << 5),
|
||||
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from
|
||||
* the table
|
||||
*/
|
||||
BATADV_TT_CLIENT_NOPURGE = (1 << 8),
|
||||
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_NEW: this client has been added to the local table
|
||||
* but has not been announced yet
|
||||
*/
|
||||
BATADV_TT_CLIENT_NEW = (1 << 9),
|
||||
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it
|
||||
* is kept in the table for one more originator interval for consistency
|
||||
* purposes
|
||||
*/
|
||||
BATADV_TT_CLIENT_PENDING = (1 << 10),
|
||||
|
||||
/**
|
||||
* @BATADV_TT_CLIENT_TEMP: this global client has been detected to be
|
||||
* part of the network but no nnode has already announced it
|
||||
*/
|
||||
BATADV_TT_CLIENT_TEMP = (1 << 11),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_mcast_flags_priv - Private, own multicast flags
|
||||
*
|
||||
* These are internal, multicast related flags. Currently they describe certain
|
||||
* multicast related attributes of the segment this originator bridges into the
|
||||
* mesh.
|
||||
*
|
||||
* Those attributes are used to determine the public multicast flags this
|
||||
* originator is going to announce via TT.
|
||||
*
|
||||
* For netlink, if BATADV_MCAST_FLAGS_BRIDGED is unset then all querier
|
||||
* related flags are undefined.
|
||||
*/
|
||||
enum batadv_mcast_flags_priv {
|
||||
/**
|
||||
* @BATADV_MCAST_FLAGS_BRIDGED: There is a bridge on top of the mesh
|
||||
* interface.
|
||||
*/
|
||||
BATADV_MCAST_FLAGS_BRIDGED = (1 << 0),
|
||||
|
||||
/**
|
||||
* @BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS: Whether an IGMP querier
|
||||
* exists in the mesh
|
||||
*/
|
||||
BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS = (1 << 1),
|
||||
|
||||
/**
|
||||
* @BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS: Whether an MLD querier
|
||||
* exists in the mesh
|
||||
*/
|
||||
BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS = (1 << 2),
|
||||
|
||||
/**
|
||||
* @BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING: If an IGMP querier
|
||||
* exists, whether it is potentially shadowing multicast listeners
|
||||
* (i.e. querier is behind our own bridge segment)
|
||||
*/
|
||||
BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING = (1 << 3),
|
||||
|
||||
/**
|
||||
* @BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING: If an MLD querier
|
||||
* exists, whether it is potentially shadowing multicast listeners
|
||||
* (i.e. querier is behind our own bridge segment)
|
||||
*/
|
||||
BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING = (1 << 4),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_gw_modes - gateway mode of node
|
||||
*/
|
||||
enum batadv_gw_modes {
|
||||
/** @BATADV_GW_MODE_OFF: gw mode disabled */
|
||||
BATADV_GW_MODE_OFF,
|
||||
|
||||
/** @BATADV_GW_MODE_CLIENT: send DHCP requests to gw servers */
|
||||
BATADV_GW_MODE_CLIENT,
|
||||
|
||||
/** @BATADV_GW_MODE_SERVER: announce itself as gatway server */
|
||||
BATADV_GW_MODE_SERVER,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_nl_attrs - batman-adv netlink attributes
|
||||
*/
|
||||
enum batadv_nl_attrs {
|
||||
/**
|
||||
* @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
|
||||
*/
|
||||
BATADV_ATTR_UNSPEC,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_VERSION: batman-adv version string
|
||||
*/
|
||||
BATADV_ATTR_VERSION,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ALGO_NAME: name of routing algorithm
|
||||
*/
|
||||
BATADV_ATTR_ALGO_NAME,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
|
||||
*/
|
||||
BATADV_ATTR_MESH_IFINDEX,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
|
||||
*/
|
||||
BATADV_ATTR_MESH_IFNAME,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
|
||||
*/
|
||||
BATADV_ATTR_MESH_ADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
|
||||
*/
|
||||
BATADV_ATTR_HARD_IFINDEX,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
|
||||
*/
|
||||
BATADV_ATTR_HARD_IFNAME,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv
|
||||
* interface
|
||||
*/
|
||||
BATADV_ATTR_HARD_ADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ORIG_ADDRESS: originator mac address
|
||||
*/
|
||||
BATADV_ATTR_ORIG_ADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TPMETER_RESULT: result of run (see
|
||||
* batadv_tp_meter_status)
|
||||
*/
|
||||
BATADV_ATTR_TPMETER_RESULT,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TPMETER_TEST_TIME: time (msec) the run took
|
||||
*/
|
||||
BATADV_ATTR_TPMETER_TEST_TIME,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
|
||||
*/
|
||||
BATADV_ATTR_TPMETER_BYTES,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
|
||||
*/
|
||||
BATADV_ATTR_TPMETER_COOKIE,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
|
||||
*/
|
||||
BATADV_ATTR_PAD,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
|
||||
*/
|
||||
BATADV_ATTR_ACTIVE,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TT_ADDRESS: Client MAC address
|
||||
*/
|
||||
BATADV_ATTR_TT_ADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TT_TTVN: Translation table version
|
||||
*/
|
||||
BATADV_ATTR_TT_TTVN,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
|
||||
*/
|
||||
BATADV_ATTR_TT_LAST_TTVN,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TT_CRC32: CRC32 over translation table
|
||||
*/
|
||||
BATADV_ATTR_TT_CRC32,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TT_VID: VLAN ID
|
||||
*/
|
||||
BATADV_ATTR_TT_VID,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TT_FLAGS: Translation table client flags
|
||||
*/
|
||||
BATADV_ATTR_TT_FLAGS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
|
||||
*/
|
||||
BATADV_ATTR_FLAG_BEST,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
|
||||
*/
|
||||
BATADV_ATTR_LAST_SEEN_MSECS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
|
||||
*/
|
||||
BATADV_ATTR_NEIGH_ADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_TQ: TQ to neighbour
|
||||
*/
|
||||
BATADV_ATTR_TQ,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour
|
||||
*/
|
||||
BATADV_ATTR_THROUGHPUT,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth
|
||||
*/
|
||||
BATADV_ATTR_BANDWIDTH_UP,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth
|
||||
*/
|
||||
BATADV_ATTR_BANDWIDTH_DOWN,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ROUTER: Gateway router MAC address
|
||||
*/
|
||||
BATADV_ATTR_ROUTER,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BLA_OWN: Flag indicating own originator
|
||||
*/
|
||||
BATADV_ATTR_BLA_OWN,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address
|
||||
*/
|
||||
BATADV_ATTR_BLA_ADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BLA_VID: BLA VLAN ID
|
||||
*/
|
||||
BATADV_ATTR_BLA_VID,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address
|
||||
*/
|
||||
BATADV_ATTR_BLA_BACKBONE,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BLA_CRC: BLA CRC
|
||||
*/
|
||||
BATADV_ATTR_BLA_CRC,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_DAT_CACHE_IP4ADDRESS: Client IPv4 address
|
||||
*/
|
||||
BATADV_ATTR_DAT_CACHE_IP4ADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_DAT_CACHE_HWADDRESS: Client MAC address
|
||||
*/
|
||||
BATADV_ATTR_DAT_CACHE_HWADDRESS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_DAT_CACHE_VID: VLAN ID
|
||||
*/
|
||||
BATADV_ATTR_DAT_CACHE_VID,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MCAST_FLAGS: Per originator multicast flags
|
||||
*/
|
||||
BATADV_ATTR_MCAST_FLAGS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MCAST_FLAGS_PRIV: Private, own multicast flags
|
||||
*/
|
||||
BATADV_ATTR_MCAST_FLAGS_PRIV,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_VLANID: VLAN id on top of soft interface
|
||||
*/
|
||||
BATADV_ATTR_VLANID,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_AGGREGATED_OGMS_ENABLED: whether the batman protocol
|
||||
* messages of the mesh interface shall be aggregated or not.
|
||||
*/
|
||||
BATADV_ATTR_AGGREGATED_OGMS_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_AP_ISOLATION_ENABLED: whether the data traffic going
|
||||
* from a wireless client to another wireless client will be silently
|
||||
* dropped.
|
||||
*/
|
||||
BATADV_ATTR_AP_ISOLATION_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ISOLATION_MARK: the isolation mark which is used to
|
||||
* classify clients as "isolated" by the Extended Isolation feature.
|
||||
*/
|
||||
BATADV_ATTR_ISOLATION_MARK,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ISOLATION_MASK: the isolation (bit)mask which is used to
|
||||
* classify clients as "isolated" by the Extended Isolation feature.
|
||||
*/
|
||||
BATADV_ATTR_ISOLATION_MASK,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BONDING_ENABLED: whether the data traffic going through
|
||||
* the mesh will be sent using multiple interfaces at the same time.
|
||||
*/
|
||||
BATADV_ATTR_BONDING_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED: whether the bridge loop
|
||||
* avoidance feature is enabled. This feature detects and avoids loops
|
||||
* between the mesh and devices bridged with the soft interface
|
||||
*/
|
||||
BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED: whether the distributed
|
||||
* arp table feature is enabled. This feature uses a distributed hash
|
||||
* table to answer ARP requests without flooding the request through
|
||||
* the whole mesh.
|
||||
*/
|
||||
BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_FRAGMENTATION_ENABLED: whether the data traffic going
|
||||
* through the mesh will be fragmented or silently discarded if the
|
||||
* packet size exceeds the outgoing interface MTU.
|
||||
*/
|
||||
BATADV_ATTR_FRAGMENTATION_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_GW_BANDWIDTH_DOWN: defines the download bandwidth which
|
||||
* is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
|
||||
* to 'server'.
|
||||
*/
|
||||
BATADV_ATTR_GW_BANDWIDTH_DOWN,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_GW_BANDWIDTH_UP: defines the upload bandwidth which
|
||||
* is propagated by this node if %BATADV_ATTR_GW_BANDWIDTH_MODE was set
|
||||
* to 'server'.
|
||||
*/
|
||||
BATADV_ATTR_GW_BANDWIDTH_UP,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_GW_MODE: defines the state of the gateway features.
|
||||
* Possible values are specified in enum batadv_gw_modes
|
||||
*/
|
||||
BATADV_ATTR_GW_MODE,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_GW_SEL_CLASS: defines the selection criteria this node
|
||||
* will use to choose a gateway if gw_mode was set to 'client'.
|
||||
*/
|
||||
BATADV_ATTR_GW_SEL_CLASS,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_HOP_PENALTY: defines the penalty which will be applied
|
||||
* to an originator message's tq-field on every hop.
|
||||
*/
|
||||
BATADV_ATTR_HOP_PENALTY,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_LOG_LEVEL: bitmask with to define which debug messages
|
||||
* should be send to the debug log/trace ring buffer
|
||||
*/
|
||||
BATADV_ATTR_LOG_LEVEL,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED: whether multicast
|
||||
* optimizations should be replaced by simple broadcast-like flooding
|
||||
* of multicast packets. If set to non-zero then all nodes in the mesh
|
||||
* are going to use classic flooding for any multicast packet with no
|
||||
* optimizations.
|
||||
*/
|
||||
BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_NETWORK_CODING_ENABLED: whether Network Coding (using
|
||||
* some magic to send fewer wifi packets but still the same content) is
|
||||
* enabled or not.
|
||||
*/
|
||||
BATADV_ATTR_NETWORK_CODING_ENABLED,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ORIG_INTERVAL: defines the interval in milliseconds in
|
||||
* which batman sends its protocol messages.
|
||||
*/
|
||||
BATADV_ATTR_ORIG_INTERVAL,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_ELP_INTERVAL: defines the interval in milliseconds in
|
||||
* which batman emits probing packets for neighbor sensing (ELP).
|
||||
*/
|
||||
BATADV_ATTR_ELP_INTERVAL,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_THROUGHPUT_OVERRIDE: defines the throughput value to be
|
||||
* used by B.A.T.M.A.N. V when estimating the link throughput using
|
||||
* this interface. If the value is set to 0 then batman-adv will try to
|
||||
* estimate the throughput by itself.
|
||||
*/
|
||||
BATADV_ATTR_THROUGHPUT_OVERRIDE,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MULTICAST_FANOUT: defines the maximum number of packet
|
||||
* copies that may be generated for a multicast-to-unicast conversion.
|
||||
* Once this limit is exceeded distribution will fall back to broadcast.
|
||||
*/
|
||||
BATADV_ATTR_MULTICAST_FANOUT,
|
||||
|
||||
/* add attributes above here, update the policy in netlink.c */
|
||||
|
||||
/**
|
||||
* @__BATADV_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
__BATADV_ATTR_AFTER_LAST,
|
||||
|
||||
/**
|
||||
* @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
|
||||
*/
|
||||
NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MAX: highest attribute number currently defined
|
||||
*/
|
||||
BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_nl_commands - supported batman-adv netlink commands
|
||||
*/
|
||||
enum batadv_nl_commands {
|
||||
/**
|
||||
* @BATADV_CMD_UNSPEC: unspecified command to catch errors
|
||||
*/
|
||||
BATADV_CMD_UNSPEC,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_MESH: Get attributes from softif/mesh
|
||||
*/
|
||||
BATADV_CMD_GET_MESH,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_MESH_INFO: Alias for @BATADV_CMD_GET_MESH
|
||||
*/
|
||||
BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_TP_METER: Start a tp meter session
|
||||
*/
|
||||
BATADV_CMD_TP_METER,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
|
||||
*/
|
||||
BATADV_CMD_TP_METER_CANCEL,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
|
||||
*/
|
||||
BATADV_CMD_GET_ROUTING_ALGOS,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_HARDIF: Get attributes from a hardif of the
|
||||
* current softif
|
||||
*/
|
||||
BATADV_CMD_GET_HARDIF,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_HARDIFS: Alias for @BATADV_CMD_GET_HARDIF
|
||||
*/
|
||||
BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
|
||||
*/
|
||||
BATADV_CMD_GET_TRANSTABLE_LOCAL,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_TRANSTABLE_GLOBAL: Query list of global translations
|
||||
*/
|
||||
BATADV_CMD_GET_TRANSTABLE_GLOBAL,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_ORIGINATORS: Query list of originators
|
||||
*/
|
||||
BATADV_CMD_GET_ORIGINATORS,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
|
||||
*/
|
||||
BATADV_CMD_GET_NEIGHBORS,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_GATEWAYS: Query list of gateways
|
||||
*/
|
||||
BATADV_CMD_GET_GATEWAYS,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims
|
||||
*/
|
||||
BATADV_CMD_GET_BLA_CLAIM,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_BLA_BACKBONE: Query list of bridge loop avoidance
|
||||
* backbones
|
||||
*/
|
||||
BATADV_CMD_GET_BLA_BACKBONE,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_DAT_CACHE: Query list of DAT cache entries
|
||||
*/
|
||||
BATADV_CMD_GET_DAT_CACHE,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_MCAST_FLAGS: Query list of multicast flags
|
||||
*/
|
||||
BATADV_CMD_GET_MCAST_FLAGS,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_SET_MESH: Set attributes for softif/mesh
|
||||
*/
|
||||
BATADV_CMD_SET_MESH,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_SET_HARDIF: Set attributes for hardif of the
|
||||
* current softif
|
||||
*/
|
||||
BATADV_CMD_SET_HARDIF,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_GET_VLAN: Get attributes from a VLAN of the
|
||||
* current softif
|
||||
*/
|
||||
BATADV_CMD_GET_VLAN,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_SET_VLAN: Set attributes for VLAN of the
|
||||
* current softif
|
||||
*/
|
||||
BATADV_CMD_SET_VLAN,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/**
|
||||
* @__BATADV_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
__BATADV_CMD_AFTER_LAST,
|
||||
|
||||
/**
|
||||
* @BATADV_CMD_MAX: highest used command number
|
||||
*/
|
||||
BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum batadv_tp_meter_reason - reason of a tp meter test run stop
|
||||
*/
|
||||
enum batadv_tp_meter_reason {
|
||||
/**
|
||||
* @BATADV_TP_REASON_COMPLETE: sender finished tp run
|
||||
*/
|
||||
BATADV_TP_REASON_COMPLETE = 3,
|
||||
|
||||
/**
|
||||
* @BATADV_TP_REASON_CANCEL: sender was stopped during run
|
||||
*/
|
||||
BATADV_TP_REASON_CANCEL = 4,
|
||||
|
||||
/* error status >= 128 */
|
||||
|
||||
/**
|
||||
* @BATADV_TP_REASON_DST_UNREACHABLE: receiver could not be reached or
|
||||
* didn't answer
|
||||
*/
|
||||
BATADV_TP_REASON_DST_UNREACHABLE = 128,
|
||||
|
||||
/**
|
||||
* @BATADV_TP_REASON_RESEND_LIMIT: (unused) sender retry reached limit
|
||||
*/
|
||||
BATADV_TP_REASON_RESEND_LIMIT = 129,
|
||||
|
||||
/**
|
||||
* @BATADV_TP_REASON_ALREADY_ONGOING: test to or from the same node
|
||||
* already ongoing
|
||||
*/
|
||||
BATADV_TP_REASON_ALREADY_ONGOING = 130,
|
||||
|
||||
/**
|
||||
* @BATADV_TP_REASON_MEMORY_ERROR: test was stopped due to low memory
|
||||
*/
|
||||
BATADV_TP_REASON_MEMORY_ERROR = 131,
|
||||
|
||||
/**
|
||||
* @BATADV_TP_REASON_CANT_SEND: failed to send via outgoing interface
|
||||
*/
|
||||
BATADV_TP_REASON_CANT_SEND = 132,
|
||||
|
||||
/**
|
||||
* @BATADV_TP_REASON_TOO_MANY: too many ongoing sessions
|
||||
*/
|
||||
BATADV_TP_REASON_TOO_MANY = 133,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_BATMAN_ADV_H_ */
|
||||
40
ramdisk/initramfs/glibc_riscv64/usr/include/linux/baycom.h
Normal file
40
ramdisk/initramfs/glibc_riscv64/usr/include/linux/baycom.h
Normal file
@ -0,0 +1,40 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* The Linux BAYCOM driver for the Baycom serial 1200 baud modem
|
||||
* and the parallel 9600 baud modem
|
||||
* (C) 1997-1998 by Thomas Sailer, HB9JNX/AE4WA
|
||||
*/
|
||||
|
||||
#ifndef _BAYCOM_H
|
||||
#define _BAYCOM_H
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/*
|
||||
* structs for the IOCTL commands
|
||||
*/
|
||||
|
||||
struct baycom_debug_data {
|
||||
unsigned long debug1;
|
||||
unsigned long debug2;
|
||||
long debug3;
|
||||
};
|
||||
|
||||
struct baycom_ioctl {
|
||||
int cmd;
|
||||
union {
|
||||
struct baycom_debug_data dbg;
|
||||
} data;
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* ioctl values change for baycom
|
||||
*/
|
||||
#define BAYCOMCTL_GETDEBUG 0x92
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
#endif /* _BAYCOM_H */
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
377
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bcache.h
Normal file
377
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bcache.h
Normal file
@ -0,0 +1,377 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BCACHE_H
|
||||
#define _LINUX_BCACHE_H
|
||||
|
||||
/*
|
||||
* Bcache on disk data structures
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define BITMASK(name, type, field, offset, size) \
|
||||
static __inline__ __u64 name(const type *k) \
|
||||
{ return (k->field >> offset) & ~(~0ULL << size); } \
|
||||
\
|
||||
static __inline__ void SET_##name(type *k, __u64 v) \
|
||||
{ \
|
||||
k->field &= ~(~(~0ULL << size) << offset); \
|
||||
k->field |= (v & ~(~0ULL << size)) << offset; \
|
||||
}
|
||||
|
||||
/* Btree keys - all units are in sectors */
|
||||
|
||||
struct bkey {
|
||||
__u64 high;
|
||||
__u64 low;
|
||||
__u64 ptr[];
|
||||
};
|
||||
|
||||
#define KEY_FIELD(name, field, offset, size) \
|
||||
BITMASK(name, struct bkey, field, offset, size)
|
||||
|
||||
#define PTR_FIELD(name, offset, size) \
|
||||
static __inline__ __u64 name(const struct bkey *k, unsigned int i) \
|
||||
{ return (k->ptr[i] >> offset) & ~(~0ULL << size); } \
|
||||
\
|
||||
static __inline__ void SET_##name(struct bkey *k, unsigned int i, __u64 v) \
|
||||
{ \
|
||||
k->ptr[i] &= ~(~(~0ULL << size) << offset); \
|
||||
k->ptr[i] |= (v & ~(~0ULL << size)) << offset; \
|
||||
}
|
||||
|
||||
#define KEY_SIZE_BITS 16
|
||||
#define KEY_MAX_U64S 8
|
||||
|
||||
KEY_FIELD(KEY_PTRS, high, 60, 3)
|
||||
KEY_FIELD(HEADER_SIZE, high, 58, 2)
|
||||
KEY_FIELD(KEY_CSUM, high, 56, 2)
|
||||
KEY_FIELD(KEY_PINNED, high, 55, 1)
|
||||
KEY_FIELD(KEY_DIRTY, high, 36, 1)
|
||||
|
||||
KEY_FIELD(KEY_SIZE, high, 20, KEY_SIZE_BITS)
|
||||
KEY_FIELD(KEY_INODE, high, 0, 20)
|
||||
|
||||
/* Next time I change the on disk format, KEY_OFFSET() won't be 64 bits */
|
||||
|
||||
static __inline__ __u64 KEY_OFFSET(const struct bkey *k)
|
||||
{
|
||||
return k->low;
|
||||
}
|
||||
|
||||
static __inline__ void SET_KEY_OFFSET(struct bkey *k, __u64 v)
|
||||
{
|
||||
k->low = v;
|
||||
}
|
||||
|
||||
/*
|
||||
* The high bit being set is a relic from when we used it to do binary
|
||||
* searches - it told you where a key started. It's not used anymore,
|
||||
* and can probably be safely dropped.
|
||||
*/
|
||||
#define KEY(inode, offset, size) \
|
||||
((struct bkey) { \
|
||||
.high = (1ULL << 63) | ((__u64) (size) << 20) | (inode), \
|
||||
.low = (offset) \
|
||||
})
|
||||
|
||||
#define ZERO_KEY KEY(0, 0, 0)
|
||||
|
||||
#define MAX_KEY_INODE (~(~0 << 20))
|
||||
#define MAX_KEY_OFFSET (~0ULL >> 1)
|
||||
#define MAX_KEY KEY(MAX_KEY_INODE, MAX_KEY_OFFSET, 0)
|
||||
|
||||
#define KEY_START(k) (KEY_OFFSET(k) - KEY_SIZE(k))
|
||||
#define START_KEY(k) KEY(KEY_INODE(k), KEY_START(k), 0)
|
||||
|
||||
#define PTR_DEV_BITS 12
|
||||
|
||||
PTR_FIELD(PTR_DEV, 51, PTR_DEV_BITS)
|
||||
PTR_FIELD(PTR_OFFSET, 8, 43)
|
||||
PTR_FIELD(PTR_GEN, 0, 8)
|
||||
|
||||
#define PTR_CHECK_DEV ((1 << PTR_DEV_BITS) - 1)
|
||||
|
||||
#define MAKE_PTR(gen, offset, dev) \
|
||||
((((__u64) dev) << 51) | ((__u64) offset) << 8 | gen)
|
||||
|
||||
/* Bkey utility code */
|
||||
|
||||
static __inline__ unsigned long bkey_u64s(const struct bkey *k)
|
||||
{
|
||||
return (sizeof(struct bkey) / sizeof(__u64)) + KEY_PTRS(k);
|
||||
}
|
||||
|
||||
static __inline__ unsigned long bkey_bytes(const struct bkey *k)
|
||||
{
|
||||
return bkey_u64s(k) * sizeof(__u64);
|
||||
}
|
||||
|
||||
#define bkey_copy(_dest, _src) memcpy(_dest, _src, bkey_bytes(_src))
|
||||
|
||||
static __inline__ void bkey_copy_key(struct bkey *dest, const struct bkey *src)
|
||||
{
|
||||
SET_KEY_INODE(dest, KEY_INODE(src));
|
||||
SET_KEY_OFFSET(dest, KEY_OFFSET(src));
|
||||
}
|
||||
|
||||
static __inline__ struct bkey *bkey_next(const struct bkey *k)
|
||||
{
|
||||
__u64 *d = (void *) k;
|
||||
|
||||
return (struct bkey *) (d + bkey_u64s(k));
|
||||
}
|
||||
|
||||
static __inline__ struct bkey *bkey_idx(const struct bkey *k, unsigned int nr_keys)
|
||||
{
|
||||
__u64 *d = (void *) k;
|
||||
|
||||
return (struct bkey *) (d + nr_keys);
|
||||
}
|
||||
/* Enough for a key with 6 pointers */
|
||||
#define BKEY_PAD 8
|
||||
|
||||
#define BKEY_PADDED(key) \
|
||||
union { struct bkey key; __u64 key ## _pad[BKEY_PAD]; }
|
||||
|
||||
/* Superblock */
|
||||
|
||||
/* Version 0: Cache device
|
||||
* Version 1: Backing device
|
||||
* Version 2: Seed pointer into btree node checksum
|
||||
* Version 3: Cache device with new UUID format
|
||||
* Version 4: Backing device with data offset
|
||||
*/
|
||||
#define BCACHE_SB_VERSION_CDEV 0
|
||||
#define BCACHE_SB_VERSION_BDEV 1
|
||||
#define BCACHE_SB_VERSION_CDEV_WITH_UUID 3
|
||||
#define BCACHE_SB_VERSION_BDEV_WITH_OFFSET 4
|
||||
#define BCACHE_SB_MAX_VERSION 4
|
||||
|
||||
#define SB_SECTOR 8
|
||||
#define SB_SIZE 4096
|
||||
#define SB_LABEL_SIZE 32
|
||||
#define SB_JOURNAL_BUCKETS 256U
|
||||
/* SB_JOURNAL_BUCKETS must be divisible by BITS_PER_LONG */
|
||||
#define MAX_CACHES_PER_SET 8
|
||||
|
||||
#define BDEV_DATA_START_DEFAULT 16 /* sectors */
|
||||
|
||||
struct cache_sb {
|
||||
__u64 csum;
|
||||
__u64 offset; /* sector where this sb was written */
|
||||
__u64 version;
|
||||
|
||||
__u8 magic[16];
|
||||
|
||||
__u8 uuid[16];
|
||||
union {
|
||||
__u8 set_uuid[16];
|
||||
__u64 set_magic;
|
||||
};
|
||||
__u8 label[SB_LABEL_SIZE];
|
||||
|
||||
__u64 flags;
|
||||
__u64 seq;
|
||||
__u64 pad[8];
|
||||
|
||||
union {
|
||||
struct {
|
||||
/* Cache devices */
|
||||
__u64 nbuckets; /* device size */
|
||||
|
||||
__u16 block_size; /* sectors */
|
||||
__u16 bucket_size; /* sectors */
|
||||
|
||||
__u16 nr_in_set;
|
||||
__u16 nr_this_dev;
|
||||
};
|
||||
struct {
|
||||
/* Backing devices */
|
||||
__u64 data_offset;
|
||||
|
||||
/*
|
||||
* block_size from the cache device section is still used by
|
||||
* backing devices, so don't add anything here until we fix
|
||||
* things to not need it for backing devices anymore
|
||||
*/
|
||||
};
|
||||
};
|
||||
|
||||
__u32 last_mount; /* time overflow in y2106 */
|
||||
|
||||
__u16 first_bucket;
|
||||
union {
|
||||
__u16 njournal_buckets;
|
||||
__u16 keys;
|
||||
};
|
||||
__u64 d[SB_JOURNAL_BUCKETS]; /* journal buckets */
|
||||
};
|
||||
|
||||
static __inline__ _Bool SB_IS_BDEV(const struct cache_sb *sb)
|
||||
{
|
||||
return sb->version == BCACHE_SB_VERSION_BDEV
|
||||
|| sb->version == BCACHE_SB_VERSION_BDEV_WITH_OFFSET;
|
||||
}
|
||||
|
||||
BITMASK(CACHE_SYNC, struct cache_sb, flags, 0, 1);
|
||||
BITMASK(CACHE_DISCARD, struct cache_sb, flags, 1, 1);
|
||||
BITMASK(CACHE_REPLACEMENT, struct cache_sb, flags, 2, 3);
|
||||
#define CACHE_REPLACEMENT_LRU 0U
|
||||
#define CACHE_REPLACEMENT_FIFO 1U
|
||||
#define CACHE_REPLACEMENT_RANDOM 2U
|
||||
|
||||
BITMASK(BDEV_CACHE_MODE, struct cache_sb, flags, 0, 4);
|
||||
#define CACHE_MODE_WRITETHROUGH 0U
|
||||
#define CACHE_MODE_WRITEBACK 1U
|
||||
#define CACHE_MODE_WRITEAROUND 2U
|
||||
#define CACHE_MODE_NONE 3U
|
||||
BITMASK(BDEV_STATE, struct cache_sb, flags, 61, 2);
|
||||
#define BDEV_STATE_NONE 0U
|
||||
#define BDEV_STATE_CLEAN 1U
|
||||
#define BDEV_STATE_DIRTY 2U
|
||||
#define BDEV_STATE_STALE 3U
|
||||
|
||||
/*
|
||||
* Magic numbers
|
||||
*
|
||||
* The various other data structures have their own magic numbers, which are
|
||||
* xored with the first part of the cache set's UUID
|
||||
*/
|
||||
|
||||
#define JSET_MAGIC 0x245235c1a3625032ULL
|
||||
#define PSET_MAGIC 0x6750e15f87337f91ULL
|
||||
#define BSET_MAGIC 0x90135c78b99e07f5ULL
|
||||
|
||||
static __inline__ __u64 jset_magic(struct cache_sb *sb)
|
||||
{
|
||||
return sb->set_magic ^ JSET_MAGIC;
|
||||
}
|
||||
|
||||
static __inline__ __u64 pset_magic(struct cache_sb *sb)
|
||||
{
|
||||
return sb->set_magic ^ PSET_MAGIC;
|
||||
}
|
||||
|
||||
static __inline__ __u64 bset_magic(struct cache_sb *sb)
|
||||
{
|
||||
return sb->set_magic ^ BSET_MAGIC;
|
||||
}
|
||||
|
||||
/*
|
||||
* Journal
|
||||
*
|
||||
* On disk format for a journal entry:
|
||||
* seq is monotonically increasing; every journal entry has its own unique
|
||||
* sequence number.
|
||||
*
|
||||
* last_seq is the oldest journal entry that still has keys the btree hasn't
|
||||
* flushed to disk yet.
|
||||
*
|
||||
* version is for on disk format changes.
|
||||
*/
|
||||
|
||||
#define BCACHE_JSET_VERSION_UUIDv1 1
|
||||
#define BCACHE_JSET_VERSION_UUID 1 /* Always latest UUID format */
|
||||
#define BCACHE_JSET_VERSION 1
|
||||
|
||||
struct jset {
|
||||
__u64 csum;
|
||||
__u64 magic;
|
||||
__u64 seq;
|
||||
__u32 version;
|
||||
__u32 keys;
|
||||
|
||||
__u64 last_seq;
|
||||
|
||||
BKEY_PADDED(uuid_bucket);
|
||||
BKEY_PADDED(btree_root);
|
||||
__u16 btree_level;
|
||||
__u16 pad[3];
|
||||
|
||||
__u64 prio_bucket[MAX_CACHES_PER_SET];
|
||||
|
||||
union {
|
||||
struct bkey start[0];
|
||||
__u64 d[0];
|
||||
};
|
||||
};
|
||||
|
||||
/* Bucket prios/gens */
|
||||
|
||||
struct prio_set {
|
||||
__u64 csum;
|
||||
__u64 magic;
|
||||
__u64 seq;
|
||||
__u32 version;
|
||||
__u32 pad;
|
||||
|
||||
__u64 next_bucket;
|
||||
|
||||
struct bucket_disk {
|
||||
__u16 prio;
|
||||
__u8 gen;
|
||||
} __attribute((packed)) data[];
|
||||
};
|
||||
|
||||
/* UUIDS - per backing device/flash only volume metadata */
|
||||
|
||||
struct uuid_entry {
|
||||
union {
|
||||
struct {
|
||||
__u8 uuid[16];
|
||||
__u8 label[32];
|
||||
__u32 first_reg; /* time overflow in y2106 */
|
||||
__u32 last_reg;
|
||||
__u32 invalidated;
|
||||
|
||||
__u32 flags;
|
||||
/* Size of flash only volumes */
|
||||
__u64 sectors;
|
||||
};
|
||||
|
||||
__u8 pad[128];
|
||||
};
|
||||
};
|
||||
|
||||
BITMASK(UUID_FLASH_ONLY, struct uuid_entry, flags, 0, 1);
|
||||
|
||||
/* Btree nodes */
|
||||
|
||||
/* Version 1: Seed pointer into btree node checksum
|
||||
*/
|
||||
#define BCACHE_BSET_CSUM 1
|
||||
#define BCACHE_BSET_VERSION 1
|
||||
|
||||
/*
|
||||
* Btree nodes
|
||||
*
|
||||
* On disk a btree node is a list/log of these; within each set the keys are
|
||||
* sorted
|
||||
*/
|
||||
struct bset {
|
||||
__u64 csum;
|
||||
__u64 magic;
|
||||
__u64 seq;
|
||||
__u32 version;
|
||||
__u32 keys;
|
||||
|
||||
union {
|
||||
struct bkey start[0];
|
||||
__u64 d[0];
|
||||
};
|
||||
};
|
||||
|
||||
/* OBSOLETE */
|
||||
|
||||
/* UUIDS - per backing device/flash only volume metadata */
|
||||
|
||||
struct uuid_entry_v0 {
|
||||
__u8 uuid[16];
|
||||
__u8 label[32];
|
||||
__u32 first_reg;
|
||||
__u32 last_reg;
|
||||
__u32 invalidated;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_BCACHE_H */
|
||||
@ -0,0 +1,25 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Broadcom Cable Modem firmware format
|
||||
*/
|
||||
|
||||
#ifndef __BCM933XX_HCS_H
|
||||
#define __BCM933XX_HCS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct bcm_hcs {
|
||||
__u16 magic;
|
||||
__u16 control;
|
||||
__u16 rev_maj;
|
||||
__u16 rev_min;
|
||||
__u32 build_date;
|
||||
__u32 filelen;
|
||||
__u32 ldaddress;
|
||||
char filename[64];
|
||||
__u16 hcs;
|
||||
__u16 her_znaet_chto;
|
||||
__u32 crc;
|
||||
};
|
||||
|
||||
#endif /* __BCM933XX_HCS */
|
||||
82
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bfs_fs.h
Normal file
82
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bfs_fs.h
Normal file
@ -0,0 +1,82 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* include/linux/bfs_fs.h - BFS data structures on disk.
|
||||
* Copyright (C) 1999-2018 Tigran Aivazian <aivazian.tigran@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_BFS_FS_H
|
||||
#define _LINUX_BFS_FS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define BFS_BSIZE_BITS 9
|
||||
#define BFS_BSIZE (1<<BFS_BSIZE_BITS)
|
||||
|
||||
#define BFS_MAGIC 0x1BADFACE
|
||||
#define BFS_ROOT_INO 2
|
||||
#define BFS_INODES_PER_BLOCK 8
|
||||
|
||||
/* SVR4 vnode type values (bfs_inode->i_vtype) */
|
||||
#define BFS_VDIR 2L
|
||||
#define BFS_VREG 1L
|
||||
|
||||
/* BFS inode layout on disk */
|
||||
struct bfs_inode {
|
||||
__le16 i_ino;
|
||||
__u16 i_unused;
|
||||
__le32 i_sblock;
|
||||
__le32 i_eblock;
|
||||
__le32 i_eoffset;
|
||||
__le32 i_vtype;
|
||||
__le32 i_mode;
|
||||
__le32 i_uid;
|
||||
__le32 i_gid;
|
||||
__le32 i_nlink;
|
||||
__le32 i_atime;
|
||||
__le32 i_mtime;
|
||||
__le32 i_ctime;
|
||||
__u32 i_padding[4];
|
||||
};
|
||||
|
||||
#define BFS_NAMELEN 14
|
||||
#define BFS_DIRENT_SIZE 16
|
||||
#define BFS_DIRS_PER_BLOCK 32
|
||||
|
||||
struct bfs_dirent {
|
||||
__le16 ino;
|
||||
char name[BFS_NAMELEN];
|
||||
};
|
||||
|
||||
/* BFS superblock layout on disk */
|
||||
struct bfs_super_block {
|
||||
__le32 s_magic;
|
||||
__le32 s_start;
|
||||
__le32 s_end;
|
||||
__le32 s_from;
|
||||
__le32 s_to;
|
||||
__s32 s_bfrom;
|
||||
__s32 s_bto;
|
||||
char s_fsname[6];
|
||||
char s_volume[6];
|
||||
__u32 s_padding[118];
|
||||
};
|
||||
|
||||
|
||||
#define BFS_OFF2INO(offset) \
|
||||
((((offset) - BFS_BSIZE) / sizeof(struct bfs_inode)) + BFS_ROOT_INO)
|
||||
|
||||
#define BFS_INO2OFF(ino) \
|
||||
((__u32)(((ino) - BFS_ROOT_INO) * sizeof(struct bfs_inode)) + BFS_BSIZE)
|
||||
#define BFS_NZFILESIZE(ip) \
|
||||
((le32_to_cpu((ip)->i_eoffset) + 1) - le32_to_cpu((ip)->i_sblock) * BFS_BSIZE)
|
||||
|
||||
#define BFS_FILESIZE(ip) \
|
||||
((ip)->i_sblock == 0 ? 0 : BFS_NZFILESIZE(ip))
|
||||
|
||||
#define BFS_FILEBLOCKS(ip) \
|
||||
((ip)->i_sblock == 0 ? 0 : (le32_to_cpu((ip)->i_eblock) + 1) - le32_to_cpu((ip)->i_sblock))
|
||||
#define BFS_UNCLEAN(bfs_sb, sb) \
|
||||
((le32_to_cpu(bfs_sb->s_from) != -1) && (le32_to_cpu(bfs_sb->s_to) != -1) && !(sb->s_flags & SB_RDONLY))
|
||||
|
||||
|
||||
#endif /* _LINUX_BFS_FS_H */
|
||||
21
ramdisk/initramfs/glibc_riscv64/usr/include/linux/binfmts.h
Normal file
21
ramdisk/initramfs/glibc_riscv64/usr/include/linux/binfmts.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BINFMTS_H
|
||||
#define _LINUX_BINFMTS_H
|
||||
|
||||
#include <linux/capability.h>
|
||||
|
||||
struct pt_regs;
|
||||
|
||||
/*
|
||||
* These are the maximum length and maximum number of strings passed to the
|
||||
* execve() system call. MAX_ARG_STRLEN is essentially random but serves to
|
||||
* prevent the kernel from being unduly impacted by misaddressed pointers.
|
||||
* MAX_ARG_STRINGS is chosen to fit in a signed 32-bit integer.
|
||||
*/
|
||||
#define MAX_ARG_STRLEN (PAGE_SIZE * 32)
|
||||
#define MAX_ARG_STRINGS 0x7FFFFFFF
|
||||
|
||||
/* sizeof(linux_binprm->buf) */
|
||||
#define BINPRM_BUF_SIZE 256
|
||||
|
||||
#endif /* _LINUX_BINFMTS_H */
|
||||
60
ramdisk/initramfs/glibc_riscv64/usr/include/linux/blkpg.h
Normal file
60
ramdisk/initramfs/glibc_riscv64/usr/include/linux/blkpg.h
Normal file
@ -0,0 +1,60 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __LINUX_BLKPG_H
|
||||
#define __LINUX_BLKPG_H
|
||||
|
||||
/*
|
||||
* Partition table and disk geometry handling
|
||||
*
|
||||
* A single ioctl with lots of subfunctions:
|
||||
*
|
||||
* Device number stuff:
|
||||
* get_whole_disk() (given the device number of a partition,
|
||||
* find the device number of the encompassing disk)
|
||||
* get_all_partitions() (given the device number of a disk, return the
|
||||
* device numbers of all its known partitions)
|
||||
*
|
||||
* Partition stuff:
|
||||
* add_partition()
|
||||
* delete_partition()
|
||||
* test_partition_in_use() (also for test_disk_in_use)
|
||||
*
|
||||
* Geometry stuff:
|
||||
* get_geometry()
|
||||
* set_geometry()
|
||||
* get_bios_drivedata()
|
||||
*
|
||||
* For today, only the partition stuff - aeb, 990515
|
||||
*/
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define BLKPG _IO(0x12,105)
|
||||
|
||||
/* The argument structure */
|
||||
struct blkpg_ioctl_arg {
|
||||
int op;
|
||||
int flags;
|
||||
int datalen;
|
||||
void *data;
|
||||
};
|
||||
|
||||
/* The subfunctions (for the op field) */
|
||||
#define BLKPG_ADD_PARTITION 1
|
||||
#define BLKPG_DEL_PARTITION 2
|
||||
#define BLKPG_RESIZE_PARTITION 3
|
||||
|
||||
/* Sizes of name fields. Unused at present. */
|
||||
#define BLKPG_DEVNAMELTH 64
|
||||
#define BLKPG_VOLNAMELTH 64
|
||||
|
||||
/* The data structure for ADD_PARTITION and DEL_PARTITION */
|
||||
struct blkpg_partition {
|
||||
long long start; /* starting offset in bytes */
|
||||
long long length; /* length in bytes */
|
||||
int pno; /* partition number */
|
||||
char devname[BLKPG_DEVNAMELTH]; /* partition name, like sda5 or c0d1p2,
|
||||
to be used in kernel messages */
|
||||
char volname[BLKPG_VOLNAMELTH]; /* volume label */
|
||||
};
|
||||
|
||||
#endif /* __LINUX_BLKPG_H */
|
||||
146
ramdisk/initramfs/glibc_riscv64/usr/include/linux/blktrace_api.h
Normal file
146
ramdisk/initramfs/glibc_riscv64/usr/include/linux/blktrace_api.h
Normal file
@ -0,0 +1,146 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef BLKTRACE_H
|
||||
#define BLKTRACE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Trace categories
|
||||
*/
|
||||
enum blktrace_cat {
|
||||
BLK_TC_READ = 1 << 0, /* reads */
|
||||
BLK_TC_WRITE = 1 << 1, /* writes */
|
||||
BLK_TC_FLUSH = 1 << 2, /* flush */
|
||||
BLK_TC_SYNC = 1 << 3, /* sync IO */
|
||||
BLK_TC_SYNCIO = BLK_TC_SYNC,
|
||||
BLK_TC_QUEUE = 1 << 4, /* queueing/merging */
|
||||
BLK_TC_REQUEUE = 1 << 5, /* requeueing */
|
||||
BLK_TC_ISSUE = 1 << 6, /* issue */
|
||||
BLK_TC_COMPLETE = 1 << 7, /* completions */
|
||||
BLK_TC_FS = 1 << 8, /* fs requests */
|
||||
BLK_TC_PC = 1 << 9, /* pc requests */
|
||||
BLK_TC_NOTIFY = 1 << 10, /* special message */
|
||||
BLK_TC_AHEAD = 1 << 11, /* readahead */
|
||||
BLK_TC_META = 1 << 12, /* metadata */
|
||||
BLK_TC_DISCARD = 1 << 13, /* discard requests */
|
||||
BLK_TC_DRV_DATA = 1 << 14, /* binary per-driver data */
|
||||
BLK_TC_FUA = 1 << 15, /* fua requests */
|
||||
|
||||
BLK_TC_END = 1 << 15, /* we've run out of bits! */
|
||||
};
|
||||
|
||||
#define BLK_TC_SHIFT (16)
|
||||
#define BLK_TC_ACT(act) ((act) << BLK_TC_SHIFT)
|
||||
|
||||
/*
|
||||
* Basic trace actions
|
||||
*/
|
||||
enum blktrace_act {
|
||||
__BLK_TA_QUEUE = 1, /* queued */
|
||||
__BLK_TA_BACKMERGE, /* back merged to existing rq */
|
||||
__BLK_TA_FRONTMERGE, /* front merge to existing rq */
|
||||
__BLK_TA_GETRQ, /* allocated new request */
|
||||
__BLK_TA_SLEEPRQ, /* sleeping on rq allocation */
|
||||
__BLK_TA_REQUEUE, /* request requeued */
|
||||
__BLK_TA_ISSUE, /* sent to driver */
|
||||
__BLK_TA_COMPLETE, /* completed by driver */
|
||||
__BLK_TA_PLUG, /* queue was plugged */
|
||||
__BLK_TA_UNPLUG_IO, /* queue was unplugged by io */
|
||||
__BLK_TA_UNPLUG_TIMER, /* queue was unplugged by timer */
|
||||
__BLK_TA_INSERT, /* insert request */
|
||||
__BLK_TA_SPLIT, /* bio was split */
|
||||
__BLK_TA_BOUNCE, /* bio was bounced */
|
||||
__BLK_TA_REMAP, /* bio was remapped */
|
||||
__BLK_TA_ABORT, /* request aborted */
|
||||
__BLK_TA_DRV_DATA, /* driver-specific binary data */
|
||||
__BLK_TA_CGROUP = 1 << 8, /* from a cgroup*/
|
||||
};
|
||||
|
||||
/*
|
||||
* Notify events.
|
||||
*/
|
||||
enum blktrace_notify {
|
||||
__BLK_TN_PROCESS = 0, /* establish pid/name mapping */
|
||||
__BLK_TN_TIMESTAMP, /* include system clock */
|
||||
__BLK_TN_MESSAGE, /* Character string message */
|
||||
__BLK_TN_CGROUP = __BLK_TA_CGROUP, /* from a cgroup */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Trace actions in full. Additionally, read or write is masked
|
||||
*/
|
||||
#define BLK_TA_QUEUE (__BLK_TA_QUEUE | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_BACKMERGE (__BLK_TA_BACKMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_FRONTMERGE (__BLK_TA_FRONTMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_GETRQ (__BLK_TA_GETRQ | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_SLEEPRQ (__BLK_TA_SLEEPRQ | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_REQUEUE (__BLK_TA_REQUEUE | BLK_TC_ACT(BLK_TC_REQUEUE))
|
||||
#define BLK_TA_ISSUE (__BLK_TA_ISSUE | BLK_TC_ACT(BLK_TC_ISSUE))
|
||||
#define BLK_TA_COMPLETE (__BLK_TA_COMPLETE| BLK_TC_ACT(BLK_TC_COMPLETE))
|
||||
#define BLK_TA_PLUG (__BLK_TA_PLUG | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_UNPLUG_IO (__BLK_TA_UNPLUG_IO | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_UNPLUG_TIMER (__BLK_TA_UNPLUG_TIMER | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_INSERT (__BLK_TA_INSERT | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_SPLIT (__BLK_TA_SPLIT)
|
||||
#define BLK_TA_BOUNCE (__BLK_TA_BOUNCE)
|
||||
#define BLK_TA_REMAP (__BLK_TA_REMAP | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_ABORT (__BLK_TA_ABORT | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
#define BLK_TA_DRV_DATA (__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA))
|
||||
|
||||
#define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
|
||||
#define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
|
||||
#define BLK_TN_MESSAGE (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY))
|
||||
|
||||
#define BLK_IO_TRACE_MAGIC 0x65617400
|
||||
#define BLK_IO_TRACE_VERSION 0x07
|
||||
|
||||
/*
|
||||
* The trace itself
|
||||
*/
|
||||
struct blk_io_trace {
|
||||
__u32 magic; /* MAGIC << 8 | version */
|
||||
__u32 sequence; /* event number */
|
||||
__u64 time; /* in nanoseconds */
|
||||
__u64 sector; /* disk offset */
|
||||
__u32 bytes; /* transfer length */
|
||||
__u32 action; /* what happened */
|
||||
__u32 pid; /* who did it */
|
||||
__u32 device; /* device number */
|
||||
__u32 cpu; /* on what cpu did it happen */
|
||||
__u16 error; /* completion error */
|
||||
__u16 pdu_len; /* length of data after this trace */
|
||||
/* cgroup id will be stored here if exists */
|
||||
};
|
||||
|
||||
/*
|
||||
* The remap event
|
||||
*/
|
||||
struct blk_io_trace_remap {
|
||||
__be32 device_from;
|
||||
__be32 device_to;
|
||||
__be64 sector_from;
|
||||
};
|
||||
|
||||
enum {
|
||||
Blktrace_setup = 1,
|
||||
Blktrace_running,
|
||||
Blktrace_stopped,
|
||||
};
|
||||
|
||||
#define BLKTRACE_BDEV_SIZE 32
|
||||
|
||||
/*
|
||||
* User setup structure passed with BLKTRACESETUP
|
||||
*/
|
||||
struct blk_user_trace_setup {
|
||||
char name[BLKTRACE_BDEV_SIZE]; /* output */
|
||||
__u16 act_mask; /* input */
|
||||
__u32 buf_size; /* input */
|
||||
__u32 buf_nr; /* input */
|
||||
__u64 start_lba;
|
||||
__u64 end_lba;
|
||||
__u32 pid;
|
||||
};
|
||||
|
||||
#endif /* BLKTRACE_H */
|
||||
148
ramdisk/initramfs/glibc_riscv64/usr/include/linux/blkzoned.h
Normal file
148
ramdisk/initramfs/glibc_riscv64/usr/include/linux/blkzoned.h
Normal file
@ -0,0 +1,148 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Zoned block devices handling.
|
||||
*
|
||||
* Copyright (C) 2015 Seagate Technology PLC
|
||||
*
|
||||
* Written by: Shaun Tancheff <shaun.tancheff@seagate.com>
|
||||
*
|
||||
* Modified by: Damien Le Moal <damien.lemoal@hgst.com>
|
||||
* Copyright (C) 2016 Western Digital
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
* warranty of any kind, whether express or implied.
|
||||
*/
|
||||
#ifndef _BLKZONED_H
|
||||
#define _BLKZONED_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/**
|
||||
* enum blk_zone_type - Types of zones allowed in a zoned device.
|
||||
*
|
||||
* @BLK_ZONE_TYPE_CONVENTIONAL: The zone has no write pointer and can be writen
|
||||
* randomly. Zone reset has no effect on the zone.
|
||||
* @BLK_ZONE_TYPE_SEQWRITE_REQ: The zone must be written sequentially
|
||||
* @BLK_ZONE_TYPE_SEQWRITE_PREF: The zone can be written non-sequentially
|
||||
*
|
||||
* Any other value not defined is reserved and must be considered as invalid.
|
||||
*/
|
||||
enum blk_zone_type {
|
||||
BLK_ZONE_TYPE_CONVENTIONAL = 0x1,
|
||||
BLK_ZONE_TYPE_SEQWRITE_REQ = 0x2,
|
||||
BLK_ZONE_TYPE_SEQWRITE_PREF = 0x3,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum blk_zone_cond - Condition [state] of a zone in a zoned device.
|
||||
*
|
||||
* @BLK_ZONE_COND_NOT_WP: The zone has no write pointer, it is conventional.
|
||||
* @BLK_ZONE_COND_EMPTY: The zone is empty.
|
||||
* @BLK_ZONE_COND_IMP_OPEN: The zone is open, but not explicitly opened.
|
||||
* @BLK_ZONE_COND_EXP_OPEN: The zones was explicitly opened by an
|
||||
* OPEN ZONE command.
|
||||
* @BLK_ZONE_COND_CLOSED: The zone was [explicitly] closed after writing.
|
||||
* @BLK_ZONE_COND_FULL: The zone is marked as full, possibly by a zone
|
||||
* FINISH ZONE command.
|
||||
* @BLK_ZONE_COND_READONLY: The zone is read-only.
|
||||
* @BLK_ZONE_COND_OFFLINE: The zone is offline (sectors cannot be read/written).
|
||||
*
|
||||
* The Zone Condition state machine in the ZBC/ZAC standards maps the above
|
||||
* deinitions as:
|
||||
* - ZC1: Empty | BLK_ZONE_EMPTY
|
||||
* - ZC2: Implicit Open | BLK_ZONE_COND_IMP_OPEN
|
||||
* - ZC3: Explicit Open | BLK_ZONE_COND_EXP_OPEN
|
||||
* - ZC4: Closed | BLK_ZONE_CLOSED
|
||||
* - ZC5: Full | BLK_ZONE_FULL
|
||||
* - ZC6: Read Only | BLK_ZONE_READONLY
|
||||
* - ZC7: Offline | BLK_ZONE_OFFLINE
|
||||
*
|
||||
* Conditions 0x5 to 0xC are reserved by the current ZBC/ZAC spec and should
|
||||
* be considered invalid.
|
||||
*/
|
||||
enum blk_zone_cond {
|
||||
BLK_ZONE_COND_NOT_WP = 0x0,
|
||||
BLK_ZONE_COND_EMPTY = 0x1,
|
||||
BLK_ZONE_COND_IMP_OPEN = 0x2,
|
||||
BLK_ZONE_COND_EXP_OPEN = 0x3,
|
||||
BLK_ZONE_COND_CLOSED = 0x4,
|
||||
BLK_ZONE_COND_READONLY = 0xD,
|
||||
BLK_ZONE_COND_FULL = 0xE,
|
||||
BLK_ZONE_COND_OFFLINE = 0xF,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct blk_zone - Zone descriptor for BLKREPORTZONE ioctl.
|
||||
*
|
||||
* @start: Zone start in 512 B sector units
|
||||
* @len: Zone length in 512 B sector units
|
||||
* @wp: Zone write pointer location in 512 B sector units
|
||||
* @type: see enum blk_zone_type for possible values
|
||||
* @cond: see enum blk_zone_cond for possible values
|
||||
* @non_seq: Flag indicating that the zone is using non-sequential resources
|
||||
* (for host-aware zoned block devices only).
|
||||
* @reset: Flag indicating that a zone reset is recommended.
|
||||
* @reserved: Padding to 64 B to match the ZBC/ZAC defined zone descriptor size.
|
||||
*
|
||||
* start, len and wp use the regular 512 B sector unit, regardless of the
|
||||
* device logical block size. The overall structure size is 64 B to match the
|
||||
* ZBC/ZAC defined zone descriptor and allow support for future additional
|
||||
* zone information.
|
||||
*/
|
||||
struct blk_zone {
|
||||
__u64 start; /* Zone start sector */
|
||||
__u64 len; /* Zone length in number of sectors */
|
||||
__u64 wp; /* Zone write pointer position */
|
||||
__u8 type; /* Zone type */
|
||||
__u8 cond; /* Zone condition */
|
||||
__u8 non_seq; /* Non-sequential write resources active */
|
||||
__u8 reset; /* Reset write pointer recommended */
|
||||
__u8 reserved[36];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct blk_zone_report - BLKREPORTZONE ioctl request/reply
|
||||
*
|
||||
* @sector: starting sector of report
|
||||
* @nr_zones: IN maximum / OUT actual
|
||||
* @reserved: padding to 16 byte alignment
|
||||
* @zones: Space to hold @nr_zones @zones entries on reply.
|
||||
*
|
||||
* The array of at most @nr_zones must follow this structure in memory.
|
||||
*/
|
||||
struct blk_zone_report {
|
||||
__u64 sector;
|
||||
__u32 nr_zones;
|
||||
__u8 reserved[4];
|
||||
struct blk_zone zones[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct blk_zone_range - BLKRESETZONE ioctl request
|
||||
* @sector: starting sector of the first zone to issue reset write pointer
|
||||
* @nr_sectors: Total number of sectors of 1 or more zones to reset
|
||||
*/
|
||||
struct blk_zone_range {
|
||||
__u64 sector;
|
||||
__u64 nr_sectors;
|
||||
};
|
||||
|
||||
/**
|
||||
* Zoned block device ioctl's:
|
||||
*
|
||||
* @BLKREPORTZONE: Get zone information. Takes a zone report as argument.
|
||||
* The zone report will start from the zone containing the
|
||||
* sector specified in the report request structure.
|
||||
* @BLKRESETZONE: Reset the write pointer of the zones in the specified
|
||||
* sector range. The sector range must be zone aligned.
|
||||
* @BLKGETZONESZ: Get the device zone size in number of 512 B sectors.
|
||||
* @BLKGETNRZONES: Get the total number of zones of the device.
|
||||
*/
|
||||
#define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report)
|
||||
#define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range)
|
||||
#define BLKGETZONESZ _IOR(0x12, 132, __u32)
|
||||
#define BLKGETNRZONES _IOR(0x12, 133, __u32)
|
||||
|
||||
#endif /* _BLKZONED_H */
|
||||
3616
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bpf.h
Normal file
3616
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bpf.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,57 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __LINUX_BPF_COMMON_H__
|
||||
#define __LINUX_BPF_COMMON_H__
|
||||
|
||||
/* Instruction classes */
|
||||
#define BPF_CLASS(code) ((code) & 0x07)
|
||||
#define BPF_LD 0x00
|
||||
#define BPF_LDX 0x01
|
||||
#define BPF_ST 0x02
|
||||
#define BPF_STX 0x03
|
||||
#define BPF_ALU 0x04
|
||||
#define BPF_JMP 0x05
|
||||
#define BPF_RET 0x06
|
||||
#define BPF_MISC 0x07
|
||||
|
||||
/* ld/ldx fields */
|
||||
#define BPF_SIZE(code) ((code) & 0x18)
|
||||
#define BPF_W 0x00 /* 32-bit */
|
||||
#define BPF_H 0x08 /* 16-bit */
|
||||
#define BPF_B 0x10 /* 8-bit */
|
||||
/* eBPF BPF_DW 0x18 64-bit */
|
||||
#define BPF_MODE(code) ((code) & 0xe0)
|
||||
#define BPF_IMM 0x00
|
||||
#define BPF_ABS 0x20
|
||||
#define BPF_IND 0x40
|
||||
#define BPF_MEM 0x60
|
||||
#define BPF_LEN 0x80
|
||||
#define BPF_MSH 0xa0
|
||||
|
||||
/* alu/jmp fields */
|
||||
#define BPF_OP(code) ((code) & 0xf0)
|
||||
#define BPF_ADD 0x00
|
||||
#define BPF_SUB 0x10
|
||||
#define BPF_MUL 0x20
|
||||
#define BPF_DIV 0x30
|
||||
#define BPF_OR 0x40
|
||||
#define BPF_AND 0x50
|
||||
#define BPF_LSH 0x60
|
||||
#define BPF_RSH 0x70
|
||||
#define BPF_NEG 0x80
|
||||
#define BPF_MOD 0x90
|
||||
#define BPF_XOR 0xa0
|
||||
|
||||
#define BPF_JA 0x00
|
||||
#define BPF_JEQ 0x10
|
||||
#define BPF_JGT 0x20
|
||||
#define BPF_JGE 0x30
|
||||
#define BPF_JSET 0x40
|
||||
#define BPF_SRC(code) ((code) & 0x08)
|
||||
#define BPF_K 0x00
|
||||
#define BPF_X 0x08
|
||||
|
||||
#ifndef BPF_MAXINSNS
|
||||
#define BPF_MAXINSNS 4096
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_BPF_COMMON_H__ */
|
||||
@ -0,0 +1,19 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Copyright (c) 2016 Facebook
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef __LINUX_BPF_PERF_EVENT_H__
|
||||
#define __LINUX_BPF_PERF_EVENT_H__
|
||||
|
||||
#include <asm/bpf_perf_event.h>
|
||||
|
||||
struct bpf_perf_event_data {
|
||||
bpf_user_pt_regs_t regs;
|
||||
__u64 sample_period;
|
||||
__u64 addr;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_BPF_PERF_EVENT_H__ */
|
||||
21
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bpfilter.h
Normal file
21
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bpfilter.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BPFILTER_H
|
||||
#define _LINUX_BPFILTER_H
|
||||
|
||||
#include <linux/if.h>
|
||||
|
||||
enum {
|
||||
BPFILTER_IPT_SO_SET_REPLACE = 64,
|
||||
BPFILTER_IPT_SO_SET_ADD_COUNTERS = 65,
|
||||
BPFILTER_IPT_SET_MAX,
|
||||
};
|
||||
|
||||
enum {
|
||||
BPFILTER_IPT_SO_GET_INFO = 64,
|
||||
BPFILTER_IPT_SO_GET_ENTRIES = 65,
|
||||
BPFILTER_IPT_SO_GET_REVISION_MATCH = 66,
|
||||
BPFILTER_IPT_SO_GET_REVISION_TARGET = 67,
|
||||
BPFILTER_IPT_GET_MAX,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_BPFILTER_H */
|
||||
40
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bpqether.h
Normal file
40
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bpqether.h
Normal file
@ -0,0 +1,40 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __BPQETHER_H
|
||||
#define __BPQETHER_H
|
||||
|
||||
/*
|
||||
* Defines for the BPQETHER pseudo device driver
|
||||
*/
|
||||
|
||||
#include <linux/if_ether.h>
|
||||
|
||||
#define SIOCSBPQETHOPT (SIOCDEVPRIVATE+0) /* reserved */
|
||||
#define SIOCSBPQETHADDR (SIOCDEVPRIVATE+1)
|
||||
|
||||
struct bpq_ethaddr {
|
||||
unsigned char destination[ETH_ALEN];
|
||||
unsigned char accept[ETH_ALEN];
|
||||
};
|
||||
|
||||
/*
|
||||
* For SIOCSBPQETHOPT - this is compatible with PI2/PacketTwin card drivers,
|
||||
* currently not implemented, though. If someone wants to hook a radio
|
||||
* to his Ethernet card he may find this useful. ;-)
|
||||
*/
|
||||
|
||||
#define SIOCGBPQETHPARAM 0x5000 /* get Level 1 parameters */
|
||||
#define SIOCSBPQETHPARAM 0x5001 /* set */
|
||||
|
||||
struct bpq_req {
|
||||
int cmd;
|
||||
int speed; /* unused */
|
||||
int clockmode; /* unused */
|
||||
int txdelay;
|
||||
unsigned char persist; /* unused */
|
||||
int slotime; /* unused */
|
||||
int squeldelay;
|
||||
int dmachan; /* unused */
|
||||
int irq; /* unused */
|
||||
};
|
||||
|
||||
#endif
|
||||
67
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bsg.h
Normal file
67
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bsg.h
Normal file
@ -0,0 +1,67 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef BSG_H
|
||||
#define BSG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define BSG_PROTOCOL_SCSI 0
|
||||
|
||||
#define BSG_SUB_PROTOCOL_SCSI_CMD 0
|
||||
#define BSG_SUB_PROTOCOL_SCSI_TMF 1
|
||||
#define BSG_SUB_PROTOCOL_SCSI_TRANSPORT 2
|
||||
|
||||
/*
|
||||
* For flag constants below:
|
||||
* sg.h sg_io_hdr also has bits defined for it's flags member. These
|
||||
* two flag values (0x10 and 0x20) have the same meaning in sg.h . For
|
||||
* bsg the BSG_FLAG_Q_AT_HEAD flag is ignored since it is the deafult.
|
||||
*/
|
||||
#define BSG_FLAG_Q_AT_TAIL 0x10 /* default is Q_AT_HEAD */
|
||||
#define BSG_FLAG_Q_AT_HEAD 0x20
|
||||
|
||||
struct sg_io_v4 {
|
||||
__s32 guard; /* [i] 'Q' to differentiate from v3 */
|
||||
__u32 protocol; /* [i] 0 -> SCSI , .... */
|
||||
__u32 subprotocol; /* [i] 0 -> SCSI command, 1 -> SCSI task
|
||||
management function, .... */
|
||||
|
||||
__u32 request_len; /* [i] in bytes */
|
||||
__u64 request; /* [i], [*i] {SCSI: cdb} */
|
||||
__u64 request_tag; /* [i] {SCSI: task tag (only if flagged)} */
|
||||
__u32 request_attr; /* [i] {SCSI: task attribute} */
|
||||
__u32 request_priority; /* [i] {SCSI: task priority} */
|
||||
__u32 request_extra; /* [i] {spare, for padding} */
|
||||
__u32 max_response_len; /* [i] in bytes */
|
||||
__u64 response; /* [i], [*o] {SCSI: (auto)sense data} */
|
||||
|
||||
/* "dout_": data out (to device); "din_": data in (from device) */
|
||||
__u32 dout_iovec_count; /* [i] 0 -> "flat" dout transfer else
|
||||
dout_xfer points to array of iovec */
|
||||
__u32 dout_xfer_len; /* [i] bytes to be transferred to device */
|
||||
__u32 din_iovec_count; /* [i] 0 -> "flat" din transfer */
|
||||
__u32 din_xfer_len; /* [i] bytes to be transferred from device */
|
||||
__u64 dout_xferp; /* [i], [*i] */
|
||||
__u64 din_xferp; /* [i], [*o] */
|
||||
|
||||
__u32 timeout; /* [i] units: millisecond */
|
||||
__u32 flags; /* [i] bit mask */
|
||||
__u64 usr_ptr; /* [i->o] unused internally */
|
||||
__u32 spare_in; /* [i] */
|
||||
|
||||
__u32 driver_status; /* [o] 0 -> ok */
|
||||
__u32 transport_status; /* [o] 0 -> ok */
|
||||
__u32 device_status; /* [o] {SCSI: command completion status} */
|
||||
__u32 retry_delay; /* [o] {SCSI: status auxiliary information} */
|
||||
__u32 info; /* [o] additional information */
|
||||
__u32 duration; /* [o] time to complete, in milliseconds */
|
||||
__u32 response_len; /* [o] bytes of response actually written */
|
||||
__s32 din_resid; /* [o] din_xfer_len - actual_din_xfer_len */
|
||||
__s32 dout_resid; /* [o] dout_xfer_len - actual_dout_xfer_len */
|
||||
__u64 generated_tag; /* [o] {SCSI: transport generated task tag} */
|
||||
__u32 spare_out; /* [o] */
|
||||
|
||||
__u32 padding;
|
||||
};
|
||||
|
||||
|
||||
#endif /* BSG_H */
|
||||
19
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bt-bmc.h
Normal file
19
ramdisk/initramfs/glibc_riscv64/usr/include/linux/bt-bmc.h
Normal file
@ -0,0 +1,19 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (c) 2015-2016, IBM Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_BT_BMC_H
|
||||
#define _LINUX_BT_BMC_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define __BT_BMC_IOCTL_MAGIC 0xb1
|
||||
#define BT_BMC_IOCTL_SMS_ATN _IO(__BT_BMC_IOCTL_MAGIC, 0x00)
|
||||
|
||||
#endif /* _LINUX_BT_BMC_H */
|
||||
165
ramdisk/initramfs/glibc_riscv64/usr/include/linux/btf.h
Normal file
165
ramdisk/initramfs/glibc_riscv64/usr/include/linux/btf.h
Normal file
@ -0,0 +1,165 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Copyright (c) 2018 Facebook */
|
||||
#ifndef __LINUX_BTF_H__
|
||||
#define __LINUX_BTF_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define BTF_MAGIC 0xeB9F
|
||||
#define BTF_VERSION 1
|
||||
|
||||
struct btf_header {
|
||||
__u16 magic;
|
||||
__u8 version;
|
||||
__u8 flags;
|
||||
__u32 hdr_len;
|
||||
|
||||
/* All offsets are in bytes relative to the end of this header */
|
||||
__u32 type_off; /* offset of type section */
|
||||
__u32 type_len; /* length of type section */
|
||||
__u32 str_off; /* offset of string section */
|
||||
__u32 str_len; /* length of string section */
|
||||
};
|
||||
|
||||
/* Max # of type identifier */
|
||||
#define BTF_MAX_TYPE 0x000fffff
|
||||
/* Max offset into the string section */
|
||||
#define BTF_MAX_NAME_OFFSET 0x00ffffff
|
||||
/* Max # of struct/union/enum members or func args */
|
||||
#define BTF_MAX_VLEN 0xffff
|
||||
|
||||
struct btf_type {
|
||||
__u32 name_off;
|
||||
/* "info" bits arrangement
|
||||
* bits 0-15: vlen (e.g. # of struct's members)
|
||||
* bits 16-23: unused
|
||||
* bits 24-27: kind (e.g. int, ptr, array...etc)
|
||||
* bits 28-30: unused
|
||||
* bit 31: kind_flag, currently used by
|
||||
* struct, union and fwd
|
||||
*/
|
||||
__u32 info;
|
||||
/* "size" is used by INT, ENUM, STRUCT, UNION and DATASEC.
|
||||
* "size" tells the size of the type it is describing.
|
||||
*
|
||||
* "type" is used by PTR, TYPEDEF, VOLATILE, CONST, RESTRICT,
|
||||
* FUNC, FUNC_PROTO and VAR.
|
||||
* "type" is a type_id referring to another type.
|
||||
*/
|
||||
union {
|
||||
__u32 size;
|
||||
__u32 type;
|
||||
};
|
||||
};
|
||||
|
||||
#define BTF_INFO_KIND(info) (((info) >> 24) & 0x0f)
|
||||
#define BTF_INFO_VLEN(info) ((info) & 0xffff)
|
||||
#define BTF_INFO_KFLAG(info) ((info) >> 31)
|
||||
|
||||
#define BTF_KIND_UNKN 0 /* Unknown */
|
||||
#define BTF_KIND_INT 1 /* Integer */
|
||||
#define BTF_KIND_PTR 2 /* Pointer */
|
||||
#define BTF_KIND_ARRAY 3 /* Array */
|
||||
#define BTF_KIND_STRUCT 4 /* Struct */
|
||||
#define BTF_KIND_UNION 5 /* Union */
|
||||
#define BTF_KIND_ENUM 6 /* Enumeration */
|
||||
#define BTF_KIND_FWD 7 /* Forward */
|
||||
#define BTF_KIND_TYPEDEF 8 /* Typedef */
|
||||
#define BTF_KIND_VOLATILE 9 /* Volatile */
|
||||
#define BTF_KIND_CONST 10 /* Const */
|
||||
#define BTF_KIND_RESTRICT 11 /* Restrict */
|
||||
#define BTF_KIND_FUNC 12 /* Function */
|
||||
#define BTF_KIND_FUNC_PROTO 13 /* Function Proto */
|
||||
#define BTF_KIND_VAR 14 /* Variable */
|
||||
#define BTF_KIND_DATASEC 15 /* Section */
|
||||
#define BTF_KIND_MAX BTF_KIND_DATASEC
|
||||
#define NR_BTF_KINDS (BTF_KIND_MAX + 1)
|
||||
|
||||
/* For some specific BTF_KIND, "struct btf_type" is immediately
|
||||
* followed by extra data.
|
||||
*/
|
||||
|
||||
/* BTF_KIND_INT is followed by a u32 and the following
|
||||
* is the 32 bits arrangement:
|
||||
*/
|
||||
#define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24)
|
||||
#define BTF_INT_OFFSET(VAL) (((VAL) & 0x00ff0000) >> 16)
|
||||
#define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff)
|
||||
|
||||
/* Attributes stored in the BTF_INT_ENCODING */
|
||||
#define BTF_INT_SIGNED (1 << 0)
|
||||
#define BTF_INT_CHAR (1 << 1)
|
||||
#define BTF_INT_BOOL (1 << 2)
|
||||
|
||||
/* BTF_KIND_ENUM is followed by multiple "struct btf_enum".
|
||||
* The exact number of btf_enum is stored in the vlen (of the
|
||||
* info in "struct btf_type").
|
||||
*/
|
||||
struct btf_enum {
|
||||
__u32 name_off;
|
||||
__s32 val;
|
||||
};
|
||||
|
||||
/* BTF_KIND_ARRAY is followed by one "struct btf_array" */
|
||||
struct btf_array {
|
||||
__u32 type;
|
||||
__u32 index_type;
|
||||
__u32 nelems;
|
||||
};
|
||||
|
||||
/* BTF_KIND_STRUCT and BTF_KIND_UNION are followed
|
||||
* by multiple "struct btf_member". The exact number
|
||||
* of btf_member is stored in the vlen (of the info in
|
||||
* "struct btf_type").
|
||||
*/
|
||||
struct btf_member {
|
||||
__u32 name_off;
|
||||
__u32 type;
|
||||
/* If the type info kind_flag is set, the btf_member offset
|
||||
* contains both member bitfield size and bit offset. The
|
||||
* bitfield size is set for bitfield members. If the type
|
||||
* info kind_flag is not set, the offset contains only bit
|
||||
* offset.
|
||||
*/
|
||||
__u32 offset;
|
||||
};
|
||||
|
||||
/* If the struct/union type info kind_flag is set, the
|
||||
* following two macros are used to access bitfield_size
|
||||
* and bit_offset from btf_member.offset.
|
||||
*/
|
||||
#define BTF_MEMBER_BITFIELD_SIZE(val) ((val) >> 24)
|
||||
#define BTF_MEMBER_BIT_OFFSET(val) ((val) & 0xffffff)
|
||||
|
||||
/* BTF_KIND_FUNC_PROTO is followed by multiple "struct btf_param".
|
||||
* The exact number of btf_param is stored in the vlen (of the
|
||||
* info in "struct btf_type").
|
||||
*/
|
||||
struct btf_param {
|
||||
__u32 name_off;
|
||||
__u32 type;
|
||||
};
|
||||
|
||||
enum {
|
||||
BTF_VAR_STATIC = 0,
|
||||
BTF_VAR_GLOBAL_ALLOCATED,
|
||||
};
|
||||
|
||||
/* BTF_KIND_VAR is followed by a single "struct btf_var" to describe
|
||||
* additional information related to the variable such as its linkage.
|
||||
*/
|
||||
struct btf_var {
|
||||
__u32 linkage;
|
||||
};
|
||||
|
||||
/* BTF_KIND_DATASEC is followed by multiple "struct btf_var_secinfo"
|
||||
* to describe all BTF_KIND_VAR types it contains along with it's
|
||||
* in-section offset as well as size.
|
||||
*/
|
||||
struct btf_var_secinfo {
|
||||
__u32 type;
|
||||
__u32 offset;
|
||||
__u32 size;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_BTF_H__ */
|
||||
950
ramdisk/initramfs/glibc_riscv64/usr/include/linux/btrfs.h
Normal file
950
ramdisk/initramfs/glibc_riscv64/usr/include/linux/btrfs.h
Normal file
@ -0,0 +1,950 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2007 Oracle. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public
|
||||
* License v2 as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 021110-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_BTRFS_H
|
||||
#define _LINUX_BTRFS_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define BTRFS_IOCTL_MAGIC 0x94
|
||||
#define BTRFS_VOL_NAME_MAX 255
|
||||
#define BTRFS_LABEL_SIZE 256
|
||||
|
||||
/* this should be 4k */
|
||||
#define BTRFS_PATH_NAME_MAX 4087
|
||||
struct btrfs_ioctl_vol_args {
|
||||
__s64 fd;
|
||||
char name[BTRFS_PATH_NAME_MAX + 1];
|
||||
};
|
||||
|
||||
#define BTRFS_DEVICE_PATH_NAME_MAX 1024
|
||||
#define BTRFS_SUBVOL_NAME_MAX 4039
|
||||
|
||||
#define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0)
|
||||
#define BTRFS_SUBVOL_RDONLY (1ULL << 1)
|
||||
#define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2)
|
||||
|
||||
#define BTRFS_DEVICE_SPEC_BY_ID (1ULL << 3)
|
||||
|
||||
#define BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED \
|
||||
(BTRFS_SUBVOL_CREATE_ASYNC | \
|
||||
BTRFS_SUBVOL_RDONLY | \
|
||||
BTRFS_SUBVOL_QGROUP_INHERIT | \
|
||||
BTRFS_DEVICE_SPEC_BY_ID)
|
||||
|
||||
#define BTRFS_FSID_SIZE 16
|
||||
#define BTRFS_UUID_SIZE 16
|
||||
#define BTRFS_UUID_UNPARSED_SIZE 37
|
||||
|
||||
/*
|
||||
* flags definition for qgroup limits
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_qgroup_limit.flags
|
||||
* struct btrfs_qgroup_limit_item.flags
|
||||
*/
|
||||
#define BTRFS_QGROUP_LIMIT_MAX_RFER (1ULL << 0)
|
||||
#define BTRFS_QGROUP_LIMIT_MAX_EXCL (1ULL << 1)
|
||||
#define BTRFS_QGROUP_LIMIT_RSV_RFER (1ULL << 2)
|
||||
#define BTRFS_QGROUP_LIMIT_RSV_EXCL (1ULL << 3)
|
||||
#define BTRFS_QGROUP_LIMIT_RFER_CMPR (1ULL << 4)
|
||||
#define BTRFS_QGROUP_LIMIT_EXCL_CMPR (1ULL << 5)
|
||||
|
||||
struct btrfs_qgroup_limit {
|
||||
__u64 flags;
|
||||
__u64 max_rfer;
|
||||
__u64 max_excl;
|
||||
__u64 rsv_rfer;
|
||||
__u64 rsv_excl;
|
||||
};
|
||||
|
||||
/*
|
||||
* flags definition for qgroup inheritance
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_qgroup_inherit.flags
|
||||
*/
|
||||
#define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0)
|
||||
|
||||
struct btrfs_qgroup_inherit {
|
||||
__u64 flags;
|
||||
__u64 num_qgroups;
|
||||
__u64 num_ref_copies;
|
||||
__u64 num_excl_copies;
|
||||
struct btrfs_qgroup_limit lim;
|
||||
__u64 qgroups[0];
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_qgroup_limit_args {
|
||||
__u64 qgroupid;
|
||||
struct btrfs_qgroup_limit lim;
|
||||
};
|
||||
|
||||
/*
|
||||
* flags for subvolumes
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_ioctl_vol_args_v2.flags
|
||||
*
|
||||
* BTRFS_SUBVOL_RDONLY is also provided/consumed by the following ioctls:
|
||||
* - BTRFS_IOC_SUBVOL_GETFLAGS
|
||||
* - BTRFS_IOC_SUBVOL_SETFLAGS
|
||||
*/
|
||||
|
||||
struct btrfs_ioctl_vol_args_v2 {
|
||||
__s64 fd;
|
||||
__u64 transid;
|
||||
__u64 flags;
|
||||
union {
|
||||
struct {
|
||||
__u64 size;
|
||||
struct btrfs_qgroup_inherit *qgroup_inherit;
|
||||
};
|
||||
__u64 unused[4];
|
||||
};
|
||||
union {
|
||||
char name[BTRFS_SUBVOL_NAME_MAX + 1];
|
||||
__u64 devid;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* structure to report errors and progress to userspace, either as a
|
||||
* result of a finished scrub, a canceled scrub or a progress inquiry
|
||||
*/
|
||||
struct btrfs_scrub_progress {
|
||||
__u64 data_extents_scrubbed; /* # of data extents scrubbed */
|
||||
__u64 tree_extents_scrubbed; /* # of tree extents scrubbed */
|
||||
__u64 data_bytes_scrubbed; /* # of data bytes scrubbed */
|
||||
__u64 tree_bytes_scrubbed; /* # of tree bytes scrubbed */
|
||||
__u64 read_errors; /* # of read errors encountered (EIO) */
|
||||
__u64 csum_errors; /* # of failed csum checks */
|
||||
__u64 verify_errors; /* # of occurences, where the metadata
|
||||
* of a tree block did not match the
|
||||
* expected values, like generation or
|
||||
* logical */
|
||||
__u64 no_csum; /* # of 4k data block for which no csum
|
||||
* is present, probably the result of
|
||||
* data written with nodatasum */
|
||||
__u64 csum_discards; /* # of csum for which no data was found
|
||||
* in the extent tree. */
|
||||
__u64 super_errors; /* # of bad super blocks encountered */
|
||||
__u64 malloc_errors; /* # of internal kmalloc errors. These
|
||||
* will likely cause an incomplete
|
||||
* scrub */
|
||||
__u64 uncorrectable_errors; /* # of errors where either no intact
|
||||
* copy was found or the writeback
|
||||
* failed */
|
||||
__u64 corrected_errors; /* # of errors corrected */
|
||||
__u64 last_physical; /* last physical address scrubbed. In
|
||||
* case a scrub was aborted, this can
|
||||
* be used to restart the scrub */
|
||||
__u64 unverified_errors; /* # of occurences where a read for a
|
||||
* full (64k) bio failed, but the re-
|
||||
* check succeeded for each 4k piece.
|
||||
* Intermittent error. */
|
||||
};
|
||||
|
||||
#define BTRFS_SCRUB_READONLY 1
|
||||
struct btrfs_ioctl_scrub_args {
|
||||
__u64 devid; /* in */
|
||||
__u64 start; /* in */
|
||||
__u64 end; /* in */
|
||||
__u64 flags; /* in */
|
||||
struct btrfs_scrub_progress progress; /* out */
|
||||
/* pad to 1k */
|
||||
__u64 unused[(1024-32-sizeof(struct btrfs_scrub_progress))/8];
|
||||
};
|
||||
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID 1
|
||||
struct btrfs_ioctl_dev_replace_start_params {
|
||||
__u64 srcdevid; /* in, if 0, use srcdev_name instead */
|
||||
__u64 cont_reading_from_srcdev_mode; /* in, see #define
|
||||
* above */
|
||||
__u8 srcdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1]; /* in */
|
||||
__u8 tgtdev_name[BTRFS_DEVICE_PATH_NAME_MAX + 1]; /* in */
|
||||
};
|
||||
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED 0
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED 1
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED 2
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED 3
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED 4
|
||||
struct btrfs_ioctl_dev_replace_status_params {
|
||||
__u64 replace_state; /* out, see #define above */
|
||||
__u64 progress_1000; /* out, 0 <= x <= 1000 */
|
||||
__u64 time_started; /* out, seconds since 1-Jan-1970 */
|
||||
__u64 time_stopped; /* out, seconds since 1-Jan-1970 */
|
||||
__u64 num_write_errors; /* out */
|
||||
__u64 num_uncorrectable_read_errors; /* out */
|
||||
};
|
||||
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_CMD_START 0
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS 1
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL 2
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2
|
||||
#define BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS 3
|
||||
struct btrfs_ioctl_dev_replace_args {
|
||||
__u64 cmd; /* in */
|
||||
__u64 result; /* out */
|
||||
|
||||
union {
|
||||
struct btrfs_ioctl_dev_replace_start_params start;
|
||||
struct btrfs_ioctl_dev_replace_status_params status;
|
||||
}; /* in/out */
|
||||
|
||||
__u64 spare[64];
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_dev_info_args {
|
||||
__u64 devid; /* in/out */
|
||||
__u8 uuid[BTRFS_UUID_SIZE]; /* in/out */
|
||||
__u64 bytes_used; /* out */
|
||||
__u64 total_bytes; /* out */
|
||||
__u64 unused[379]; /* pad to 4k */
|
||||
__u8 path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_fs_info_args {
|
||||
__u64 max_id; /* out */
|
||||
__u64 num_devices; /* out */
|
||||
__u8 fsid[BTRFS_FSID_SIZE]; /* out */
|
||||
__u32 nodesize; /* out */
|
||||
__u32 sectorsize; /* out */
|
||||
__u32 clone_alignment; /* out */
|
||||
__u32 reserved32;
|
||||
__u64 reserved[122]; /* pad to 1k */
|
||||
};
|
||||
|
||||
/*
|
||||
* feature flags
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_ioctl_feature_flags
|
||||
*/
|
||||
#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
|
||||
/*
|
||||
* Older kernels (< 4.9) on big-endian systems produced broken free space tree
|
||||
* bitmaps, and btrfs-progs also used to corrupt the free space tree (versions
|
||||
* < 4.7.3). If this bit is clear, then the free space tree cannot be trusted.
|
||||
* btrfs-progs can also intentionally clear this bit to ask the kernel to
|
||||
* rebuild the free space tree, however this might not work on older kernels
|
||||
* that do not know about this bit. If not sure, clear the cache manually on
|
||||
* first mount when booting older kernel versions.
|
||||
*/
|
||||
#define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
|
||||
|
||||
#define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
|
||||
#define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
|
||||
#define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
|
||||
#define BTRFS_FEATURE_INCOMPAT_COMPRESS_LZO (1ULL << 3)
|
||||
#define BTRFS_FEATURE_INCOMPAT_COMPRESS_ZSTD (1ULL << 4)
|
||||
|
||||
/*
|
||||
* older kernels tried to do bigger metadata blocks, but the
|
||||
* code was pretty buggy. Lets not let them try anymore.
|
||||
*/
|
||||
#define BTRFS_FEATURE_INCOMPAT_BIG_METADATA (1ULL << 5)
|
||||
|
||||
#define BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF (1ULL << 6)
|
||||
#define BTRFS_FEATURE_INCOMPAT_RAID56 (1ULL << 7)
|
||||
#define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8)
|
||||
#define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9)
|
||||
#define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
|
||||
|
||||
struct btrfs_ioctl_feature_flags {
|
||||
__u64 compat_flags;
|
||||
__u64 compat_ro_flags;
|
||||
__u64 incompat_flags;
|
||||
};
|
||||
|
||||
/* balance control ioctl modes */
|
||||
#define BTRFS_BALANCE_CTL_PAUSE 1
|
||||
#define BTRFS_BALANCE_CTL_CANCEL 2
|
||||
|
||||
/*
|
||||
* this is packed, because it should be exactly the same as its disk
|
||||
* byte order counterpart (struct btrfs_disk_balance_args)
|
||||
*/
|
||||
struct btrfs_balance_args {
|
||||
__u64 profiles;
|
||||
union {
|
||||
__u64 usage;
|
||||
struct {
|
||||
__u32 usage_min;
|
||||
__u32 usage_max;
|
||||
};
|
||||
};
|
||||
__u64 devid;
|
||||
__u64 pstart;
|
||||
__u64 pend;
|
||||
__u64 vstart;
|
||||
__u64 vend;
|
||||
|
||||
__u64 target;
|
||||
|
||||
__u64 flags;
|
||||
|
||||
/*
|
||||
* BTRFS_BALANCE_ARGS_LIMIT with value 'limit'
|
||||
* BTRFS_BALANCE_ARGS_LIMIT_RANGE - the extend version can use minimum
|
||||
* and maximum
|
||||
*/
|
||||
union {
|
||||
__u64 limit; /* limit number of processed chunks */
|
||||
struct {
|
||||
__u32 limit_min;
|
||||
__u32 limit_max;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Process chunks that cross stripes_min..stripes_max devices,
|
||||
* BTRFS_BALANCE_ARGS_STRIPES_RANGE
|
||||
*/
|
||||
__u32 stripes_min;
|
||||
__u32 stripes_max;
|
||||
|
||||
__u64 unused[6];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/* report balance progress to userspace */
|
||||
struct btrfs_balance_progress {
|
||||
__u64 expected; /* estimated # of chunks that will be
|
||||
* relocated to fulfill the request */
|
||||
__u64 considered; /* # of chunks we have considered so far */
|
||||
__u64 completed; /* # of chunks relocated so far */
|
||||
};
|
||||
|
||||
/*
|
||||
* flags definition for balance
|
||||
*
|
||||
* Restriper's general type filter
|
||||
*
|
||||
* Used by:
|
||||
* btrfs_ioctl_balance_args.flags
|
||||
* btrfs_balance_control.flags (internal)
|
||||
*/
|
||||
#define BTRFS_BALANCE_DATA (1ULL << 0)
|
||||
#define BTRFS_BALANCE_SYSTEM (1ULL << 1)
|
||||
#define BTRFS_BALANCE_METADATA (1ULL << 2)
|
||||
|
||||
#define BTRFS_BALANCE_TYPE_MASK (BTRFS_BALANCE_DATA | \
|
||||
BTRFS_BALANCE_SYSTEM | \
|
||||
BTRFS_BALANCE_METADATA)
|
||||
|
||||
#define BTRFS_BALANCE_FORCE (1ULL << 3)
|
||||
#define BTRFS_BALANCE_RESUME (1ULL << 4)
|
||||
|
||||
/*
|
||||
* flags definitions for per-type balance args
|
||||
*
|
||||
* Balance filters
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_balance_args
|
||||
*/
|
||||
#define BTRFS_BALANCE_ARGS_PROFILES (1ULL << 0)
|
||||
#define BTRFS_BALANCE_ARGS_USAGE (1ULL << 1)
|
||||
#define BTRFS_BALANCE_ARGS_DEVID (1ULL << 2)
|
||||
#define BTRFS_BALANCE_ARGS_DRANGE (1ULL << 3)
|
||||
#define BTRFS_BALANCE_ARGS_VRANGE (1ULL << 4)
|
||||
#define BTRFS_BALANCE_ARGS_LIMIT (1ULL << 5)
|
||||
#define BTRFS_BALANCE_ARGS_LIMIT_RANGE (1ULL << 6)
|
||||
#define BTRFS_BALANCE_ARGS_STRIPES_RANGE (1ULL << 7)
|
||||
#define BTRFS_BALANCE_ARGS_USAGE_RANGE (1ULL << 10)
|
||||
|
||||
#define BTRFS_BALANCE_ARGS_MASK \
|
||||
(BTRFS_BALANCE_ARGS_PROFILES | \
|
||||
BTRFS_BALANCE_ARGS_USAGE | \
|
||||
BTRFS_BALANCE_ARGS_DEVID | \
|
||||
BTRFS_BALANCE_ARGS_DRANGE | \
|
||||
BTRFS_BALANCE_ARGS_VRANGE | \
|
||||
BTRFS_BALANCE_ARGS_LIMIT | \
|
||||
BTRFS_BALANCE_ARGS_LIMIT_RANGE | \
|
||||
BTRFS_BALANCE_ARGS_STRIPES_RANGE | \
|
||||
BTRFS_BALANCE_ARGS_USAGE_RANGE)
|
||||
|
||||
/*
|
||||
* Profile changing flags. When SOFT is set we won't relocate chunk if
|
||||
* it already has the target profile (even though it may be
|
||||
* half-filled).
|
||||
*/
|
||||
#define BTRFS_BALANCE_ARGS_CONVERT (1ULL << 8)
|
||||
#define BTRFS_BALANCE_ARGS_SOFT (1ULL << 9)
|
||||
|
||||
|
||||
/*
|
||||
* flags definition for balance state
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_ioctl_balance_args.state
|
||||
*/
|
||||
#define BTRFS_BALANCE_STATE_RUNNING (1ULL << 0)
|
||||
#define BTRFS_BALANCE_STATE_PAUSE_REQ (1ULL << 1)
|
||||
#define BTRFS_BALANCE_STATE_CANCEL_REQ (1ULL << 2)
|
||||
|
||||
struct btrfs_ioctl_balance_args {
|
||||
__u64 flags; /* in/out */
|
||||
__u64 state; /* out */
|
||||
|
||||
struct btrfs_balance_args data; /* in/out */
|
||||
struct btrfs_balance_args meta; /* in/out */
|
||||
struct btrfs_balance_args sys; /* in/out */
|
||||
|
||||
struct btrfs_balance_progress stat; /* out */
|
||||
|
||||
__u64 unused[72]; /* pad to 1k */
|
||||
};
|
||||
|
||||
#define BTRFS_INO_LOOKUP_PATH_MAX 4080
|
||||
struct btrfs_ioctl_ino_lookup_args {
|
||||
__u64 treeid;
|
||||
__u64 objectid;
|
||||
char name[BTRFS_INO_LOOKUP_PATH_MAX];
|
||||
};
|
||||
|
||||
#define BTRFS_INO_LOOKUP_USER_PATH_MAX (4080 - BTRFS_VOL_NAME_MAX - 1)
|
||||
struct btrfs_ioctl_ino_lookup_user_args {
|
||||
/* in, inode number containing the subvolume of 'subvolid' */
|
||||
__u64 dirid;
|
||||
/* in */
|
||||
__u64 treeid;
|
||||
/* out, name of the subvolume of 'treeid' */
|
||||
char name[BTRFS_VOL_NAME_MAX + 1];
|
||||
/*
|
||||
* out, constructed path from the directory with which the ioctl is
|
||||
* called to dirid
|
||||
*/
|
||||
char path[BTRFS_INO_LOOKUP_USER_PATH_MAX];
|
||||
};
|
||||
|
||||
/* Search criteria for the btrfs SEARCH ioctl family. */
|
||||
struct btrfs_ioctl_search_key {
|
||||
/*
|
||||
* The tree we're searching in. 1 is the tree of tree roots, 2 is the
|
||||
* extent tree, etc...
|
||||
*
|
||||
* A special tree_id value of 0 will cause a search in the subvolume
|
||||
* tree that the inode which is passed to the ioctl is part of.
|
||||
*/
|
||||
__u64 tree_id; /* in */
|
||||
|
||||
/*
|
||||
* When doing a tree search, we're actually taking a slice from a
|
||||
* linear search space of 136-bit keys.
|
||||
*
|
||||
* A full 136-bit tree key is composed as:
|
||||
* (objectid << 72) + (type << 64) + offset
|
||||
*
|
||||
* The individual min and max values for objectid, type and offset
|
||||
* define the min_key and max_key values for the search range. All
|
||||
* metadata items with a key in the interval [min_key, max_key] will be
|
||||
* returned.
|
||||
*
|
||||
* Additionally, we can filter the items returned on transaction id of
|
||||
* the metadata block they're stored in by specifying a transid range.
|
||||
* Be aware that this transaction id only denotes when the metadata
|
||||
* page that currently contains the item got written the last time as
|
||||
* result of a COW operation. The number does not have any meaning
|
||||
* related to the transaction in which an individual item that is being
|
||||
* returned was created or changed.
|
||||
*/
|
||||
__u64 min_objectid; /* in */
|
||||
__u64 max_objectid; /* in */
|
||||
__u64 min_offset; /* in */
|
||||
__u64 max_offset; /* in */
|
||||
__u64 min_transid; /* in */
|
||||
__u64 max_transid; /* in */
|
||||
__u32 min_type; /* in */
|
||||
__u32 max_type; /* in */
|
||||
|
||||
/*
|
||||
* input: The maximum amount of results desired.
|
||||
* output: The actual amount of items returned, restricted by any of:
|
||||
* - reaching the upper bound of the search range
|
||||
* - reaching the input nr_items amount of items
|
||||
* - completely filling the supplied memory buffer
|
||||
*/
|
||||
__u32 nr_items; /* in/out */
|
||||
|
||||
/* align to 64 bits */
|
||||
__u32 unused;
|
||||
|
||||
/* some extra for later */
|
||||
__u64 unused1;
|
||||
__u64 unused2;
|
||||
__u64 unused3;
|
||||
__u64 unused4;
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_search_header {
|
||||
__u64 transid;
|
||||
__u64 objectid;
|
||||
__u64 offset;
|
||||
__u32 type;
|
||||
__u32 len;
|
||||
};
|
||||
|
||||
#define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key))
|
||||
/*
|
||||
* the buf is an array of search headers where
|
||||
* each header is followed by the actual item
|
||||
* the type field is expanded to 32 bits for alignment
|
||||
*/
|
||||
struct btrfs_ioctl_search_args {
|
||||
struct btrfs_ioctl_search_key key;
|
||||
char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_search_args_v2 {
|
||||
struct btrfs_ioctl_search_key key; /* in/out - search parameters */
|
||||
__u64 buf_size; /* in - size of buffer
|
||||
* out - on EOVERFLOW: needed size
|
||||
* to store item */
|
||||
__u64 buf[0]; /* out - found items */
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_clone_range_args {
|
||||
__s64 src_fd;
|
||||
__u64 src_offset, src_length;
|
||||
__u64 dest_offset;
|
||||
};
|
||||
|
||||
/*
|
||||
* flags definition for the defrag range ioctl
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_ioctl_defrag_range_args.flags
|
||||
*/
|
||||
#define BTRFS_DEFRAG_RANGE_COMPRESS 1
|
||||
#define BTRFS_DEFRAG_RANGE_START_IO 2
|
||||
struct btrfs_ioctl_defrag_range_args {
|
||||
/* start of the defrag operation */
|
||||
__u64 start;
|
||||
|
||||
/* number of bytes to defrag, use (u64)-1 to say all */
|
||||
__u64 len;
|
||||
|
||||
/*
|
||||
* flags for the operation, which can include turning
|
||||
* on compression for this one defrag
|
||||
*/
|
||||
__u64 flags;
|
||||
|
||||
/*
|
||||
* any extent bigger than this will be considered
|
||||
* already defragged. Use 0 to take the kernel default
|
||||
* Use 1 to say every single extent must be rewritten
|
||||
*/
|
||||
__u32 extent_thresh;
|
||||
|
||||
/*
|
||||
* which compression method to use if turning on compression
|
||||
* for this defrag operation. If unspecified, zlib will
|
||||
* be used
|
||||
*/
|
||||
__u32 compress_type;
|
||||
|
||||
/* spare for later */
|
||||
__u32 unused[4];
|
||||
};
|
||||
|
||||
|
||||
#define BTRFS_SAME_DATA_DIFFERS 1
|
||||
/* For extent-same ioctl */
|
||||
struct btrfs_ioctl_same_extent_info {
|
||||
__s64 fd; /* in - destination file */
|
||||
__u64 logical_offset; /* in - start of extent in destination */
|
||||
__u64 bytes_deduped; /* out - total # of bytes we were able
|
||||
* to dedupe from this file */
|
||||
/* status of this dedupe operation:
|
||||
* 0 if dedup succeeds
|
||||
* < 0 for error
|
||||
* == BTRFS_SAME_DATA_DIFFERS if data differs
|
||||
*/
|
||||
__s32 status; /* out - see above description */
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_same_args {
|
||||
__u64 logical_offset; /* in - start of extent in source */
|
||||
__u64 length; /* in - length of extent */
|
||||
__u16 dest_count; /* in - total elements in info array */
|
||||
__u16 reserved1;
|
||||
__u32 reserved2;
|
||||
struct btrfs_ioctl_same_extent_info info[0];
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_space_info {
|
||||
__u64 flags;
|
||||
__u64 total_bytes;
|
||||
__u64 used_bytes;
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_space_args {
|
||||
__u64 space_slots;
|
||||
__u64 total_spaces;
|
||||
struct btrfs_ioctl_space_info spaces[0];
|
||||
};
|
||||
|
||||
struct btrfs_data_container {
|
||||
__u32 bytes_left; /* out -- bytes not needed to deliver output */
|
||||
__u32 bytes_missing; /* out -- additional bytes needed for result */
|
||||
__u32 elem_cnt; /* out */
|
||||
__u32 elem_missed; /* out */
|
||||
__u64 val[0]; /* out */
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_ino_path_args {
|
||||
__u64 inum; /* in */
|
||||
__u64 size; /* in */
|
||||
__u64 reserved[4];
|
||||
/* struct btrfs_data_container *fspath; out */
|
||||
__u64 fspath; /* out */
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_logical_ino_args {
|
||||
__u64 logical; /* in */
|
||||
__u64 size; /* in */
|
||||
__u64 reserved[3]; /* must be 0 for now */
|
||||
__u64 flags; /* in, v2 only */
|
||||
/* struct btrfs_data_container *inodes; out */
|
||||
__u64 inodes;
|
||||
};
|
||||
/* Return every ref to the extent, not just those containing logical block.
|
||||
* Requires logical == extent bytenr. */
|
||||
#define BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET (1ULL << 0)
|
||||
|
||||
enum btrfs_dev_stat_values {
|
||||
/* disk I/O failure stats */
|
||||
BTRFS_DEV_STAT_WRITE_ERRS, /* EIO or EREMOTEIO from lower layers */
|
||||
BTRFS_DEV_STAT_READ_ERRS, /* EIO or EREMOTEIO from lower layers */
|
||||
BTRFS_DEV_STAT_FLUSH_ERRS, /* EIO or EREMOTEIO from lower layers */
|
||||
|
||||
/* stats for indirect indications for I/O failures */
|
||||
BTRFS_DEV_STAT_CORRUPTION_ERRS, /* checksum error, bytenr error or
|
||||
* contents is illegal: this is an
|
||||
* indication that the block was damaged
|
||||
* during read or write, or written to
|
||||
* wrong location or read from wrong
|
||||
* location */
|
||||
BTRFS_DEV_STAT_GENERATION_ERRS, /* an indication that blocks have not
|
||||
* been written */
|
||||
|
||||
BTRFS_DEV_STAT_VALUES_MAX
|
||||
};
|
||||
|
||||
/* Reset statistics after reading; needs SYS_ADMIN capability */
|
||||
#define BTRFS_DEV_STATS_RESET (1ULL << 0)
|
||||
|
||||
struct btrfs_ioctl_get_dev_stats {
|
||||
__u64 devid; /* in */
|
||||
__u64 nr_items; /* in/out */
|
||||
__u64 flags; /* in/out */
|
||||
|
||||
/* out values: */
|
||||
__u64 values[BTRFS_DEV_STAT_VALUES_MAX];
|
||||
|
||||
/*
|
||||
* This pads the struct to 1032 bytes. It was originally meant to pad to
|
||||
* 1024 bytes, but when adding the flags field, the padding calculation
|
||||
* was not adjusted.
|
||||
*/
|
||||
__u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX];
|
||||
};
|
||||
|
||||
#define BTRFS_QUOTA_CTL_ENABLE 1
|
||||
#define BTRFS_QUOTA_CTL_DISABLE 2
|
||||
#define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
|
||||
struct btrfs_ioctl_quota_ctl_args {
|
||||
__u64 cmd;
|
||||
__u64 status;
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_quota_rescan_args {
|
||||
__u64 flags;
|
||||
__u64 progress;
|
||||
__u64 reserved[6];
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_qgroup_assign_args {
|
||||
__u64 assign;
|
||||
__u64 src;
|
||||
__u64 dst;
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_qgroup_create_args {
|
||||
__u64 create;
|
||||
__u64 qgroupid;
|
||||
};
|
||||
struct btrfs_ioctl_timespec {
|
||||
__u64 sec;
|
||||
__u32 nsec;
|
||||
};
|
||||
|
||||
struct btrfs_ioctl_received_subvol_args {
|
||||
char uuid[BTRFS_UUID_SIZE]; /* in */
|
||||
__u64 stransid; /* in */
|
||||
__u64 rtransid; /* out */
|
||||
struct btrfs_ioctl_timespec stime; /* in */
|
||||
struct btrfs_ioctl_timespec rtime; /* out */
|
||||
__u64 flags; /* in */
|
||||
__u64 reserved[16]; /* in */
|
||||
};
|
||||
|
||||
/*
|
||||
* Caller doesn't want file data in the send stream, even if the
|
||||
* search of clone sources doesn't find an extent. UPDATE_EXTENT
|
||||
* commands will be sent instead of WRITE commands.
|
||||
*/
|
||||
#define BTRFS_SEND_FLAG_NO_FILE_DATA 0x1
|
||||
|
||||
/*
|
||||
* Do not add the leading stream header. Used when multiple snapshots
|
||||
* are sent back to back.
|
||||
*/
|
||||
#define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
|
||||
|
||||
/*
|
||||
* Omit the command at the end of the stream that indicated the end
|
||||
* of the stream. This option is used when multiple snapshots are
|
||||
* sent back to back.
|
||||
*/
|
||||
#define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
|
||||
|
||||
#define BTRFS_SEND_FLAG_MASK \
|
||||
(BTRFS_SEND_FLAG_NO_FILE_DATA | \
|
||||
BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | \
|
||||
BTRFS_SEND_FLAG_OMIT_END_CMD)
|
||||
|
||||
struct btrfs_ioctl_send_args {
|
||||
__s64 send_fd; /* in */
|
||||
__u64 clone_sources_count; /* in */
|
||||
__u64 *clone_sources; /* in */
|
||||
__u64 parent_root; /* in */
|
||||
__u64 flags; /* in */
|
||||
__u64 reserved[4]; /* in */
|
||||
};
|
||||
|
||||
/*
|
||||
* Information about a fs tree root.
|
||||
*
|
||||
* All items are filled by the ioctl
|
||||
*/
|
||||
struct btrfs_ioctl_get_subvol_info_args {
|
||||
/* Id of this subvolume */
|
||||
__u64 treeid;
|
||||
|
||||
/* Name of this subvolume, used to get the real name at mount point */
|
||||
char name[BTRFS_VOL_NAME_MAX + 1];
|
||||
|
||||
/*
|
||||
* Id of the subvolume which contains this subvolume.
|
||||
* Zero for top-level subvolume or a deleted subvolume.
|
||||
*/
|
||||
__u64 parent_id;
|
||||
|
||||
/*
|
||||
* Inode number of the directory which contains this subvolume.
|
||||
* Zero for top-level subvolume or a deleted subvolume
|
||||
*/
|
||||
__u64 dirid;
|
||||
|
||||
/* Latest transaction id of this subvolume */
|
||||
__u64 generation;
|
||||
|
||||
/* Flags of this subvolume */
|
||||
__u64 flags;
|
||||
|
||||
/* UUID of this subvolume */
|
||||
__u8 uuid[BTRFS_UUID_SIZE];
|
||||
|
||||
/*
|
||||
* UUID of the subvolume of which this subvolume is a snapshot.
|
||||
* All zero for a non-snapshot subvolume.
|
||||
*/
|
||||
__u8 parent_uuid[BTRFS_UUID_SIZE];
|
||||
|
||||
/*
|
||||
* UUID of the subvolume from which this subvolume was received.
|
||||
* All zero for non-received subvolume.
|
||||
*/
|
||||
__u8 received_uuid[BTRFS_UUID_SIZE];
|
||||
|
||||
/* Transaction id indicating when change/create/send/receive happened */
|
||||
__u64 ctransid;
|
||||
__u64 otransid;
|
||||
__u64 stransid;
|
||||
__u64 rtransid;
|
||||
/* Time corresponding to c/o/s/rtransid */
|
||||
struct btrfs_ioctl_timespec ctime;
|
||||
struct btrfs_ioctl_timespec otime;
|
||||
struct btrfs_ioctl_timespec stime;
|
||||
struct btrfs_ioctl_timespec rtime;
|
||||
|
||||
/* Must be zero */
|
||||
__u64 reserved[8];
|
||||
};
|
||||
|
||||
#define BTRFS_MAX_ROOTREF_BUFFER_NUM 255
|
||||
struct btrfs_ioctl_get_subvol_rootref_args {
|
||||
/* in/out, minimum id of rootref's treeid to be searched */
|
||||
__u64 min_treeid;
|
||||
|
||||
/* out */
|
||||
struct {
|
||||
__u64 treeid;
|
||||
__u64 dirid;
|
||||
} rootref[BTRFS_MAX_ROOTREF_BUFFER_NUM];
|
||||
|
||||
/* out, number of found items */
|
||||
__u8 num_items;
|
||||
__u8 align[7];
|
||||
};
|
||||
|
||||
/* Error codes as returned by the kernel */
|
||||
enum btrfs_err_code {
|
||||
BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
|
||||
BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
|
||||
BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET,
|
||||
BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET,
|
||||
BTRFS_ERROR_DEV_TGT_REPLACE,
|
||||
BTRFS_ERROR_DEV_MISSING_NOT_FOUND,
|
||||
BTRFS_ERROR_DEV_ONLY_WRITABLE,
|
||||
BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS
|
||||
};
|
||||
|
||||
#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_FORGET_DEV _IOW(BTRFS_IOCTL_MAGIC, 5, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
/* trans start and trans end are dangerous, and only for
|
||||
* use by applications that know how to avoid the
|
||||
* resulting deadlocks
|
||||
*/
|
||||
#define BTRFS_IOC_TRANS_START _IO(BTRFS_IOCTL_MAGIC, 6)
|
||||
#define BTRFS_IOC_TRANS_END _IO(BTRFS_IOCTL_MAGIC, 7)
|
||||
#define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8)
|
||||
|
||||
#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int)
|
||||
#define BTRFS_IOC_ADD_DEV _IOW(BTRFS_IOCTL_MAGIC, 10, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_RM_DEV _IOW(BTRFS_IOCTL_MAGIC, 11, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_BALANCE _IOW(BTRFS_IOCTL_MAGIC, 12, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
|
||||
#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \
|
||||
struct btrfs_ioctl_clone_range_args)
|
||||
|
||||
#define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_DEFRAG_RANGE _IOW(BTRFS_IOCTL_MAGIC, 16, \
|
||||
struct btrfs_ioctl_defrag_range_args)
|
||||
#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, \
|
||||
struct btrfs_ioctl_search_args)
|
||||
#define BTRFS_IOC_TREE_SEARCH_V2 _IOWR(BTRFS_IOCTL_MAGIC, 17, \
|
||||
struct btrfs_ioctl_search_args_v2)
|
||||
#define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18, \
|
||||
struct btrfs_ioctl_ino_lookup_args)
|
||||
#define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, __u64)
|
||||
#define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, \
|
||||
struct btrfs_ioctl_space_args)
|
||||
#define BTRFS_IOC_START_SYNC _IOR(BTRFS_IOCTL_MAGIC, 24, __u64)
|
||||
#define BTRFS_IOC_WAIT_SYNC _IOW(BTRFS_IOCTL_MAGIC, 22, __u64)
|
||||
#define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, \
|
||||
struct btrfs_ioctl_vol_args_v2)
|
||||
#define BTRFS_IOC_SUBVOL_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 24, \
|
||||
struct btrfs_ioctl_vol_args_v2)
|
||||
#define BTRFS_IOC_SUBVOL_GETFLAGS _IOR(BTRFS_IOCTL_MAGIC, 25, __u64)
|
||||
#define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64)
|
||||
#define BTRFS_IOC_SCRUB _IOWR(BTRFS_IOCTL_MAGIC, 27, \
|
||||
struct btrfs_ioctl_scrub_args)
|
||||
#define BTRFS_IOC_SCRUB_CANCEL _IO(BTRFS_IOCTL_MAGIC, 28)
|
||||
#define BTRFS_IOC_SCRUB_PROGRESS _IOWR(BTRFS_IOCTL_MAGIC, 29, \
|
||||
struct btrfs_ioctl_scrub_args)
|
||||
#define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, \
|
||||
struct btrfs_ioctl_dev_info_args)
|
||||
#define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, \
|
||||
struct btrfs_ioctl_fs_info_args)
|
||||
#define BTRFS_IOC_BALANCE_V2 _IOWR(BTRFS_IOCTL_MAGIC, 32, \
|
||||
struct btrfs_ioctl_balance_args)
|
||||
#define BTRFS_IOC_BALANCE_CTL _IOW(BTRFS_IOCTL_MAGIC, 33, int)
|
||||
#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 34, \
|
||||
struct btrfs_ioctl_balance_args)
|
||||
#define BTRFS_IOC_INO_PATHS _IOWR(BTRFS_IOCTL_MAGIC, 35, \
|
||||
struct btrfs_ioctl_ino_path_args)
|
||||
#define BTRFS_IOC_LOGICAL_INO _IOWR(BTRFS_IOCTL_MAGIC, 36, \
|
||||
struct btrfs_ioctl_logical_ino_args)
|
||||
#define BTRFS_IOC_SET_RECEIVED_SUBVOL _IOWR(BTRFS_IOCTL_MAGIC, 37, \
|
||||
struct btrfs_ioctl_received_subvol_args)
|
||||
#define BTRFS_IOC_SEND _IOW(BTRFS_IOCTL_MAGIC, 38, struct btrfs_ioctl_send_args)
|
||||
#define BTRFS_IOC_DEVICES_READY _IOR(BTRFS_IOCTL_MAGIC, 39, \
|
||||
struct btrfs_ioctl_vol_args)
|
||||
#define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40, \
|
||||
struct btrfs_ioctl_quota_ctl_args)
|
||||
#define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41, \
|
||||
struct btrfs_ioctl_qgroup_assign_args)
|
||||
#define BTRFS_IOC_QGROUP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 42, \
|
||||
struct btrfs_ioctl_qgroup_create_args)
|
||||
#define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, \
|
||||
struct btrfs_ioctl_qgroup_limit_args)
|
||||
#define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, \
|
||||
struct btrfs_ioctl_quota_rescan_args)
|
||||
#define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \
|
||||
struct btrfs_ioctl_quota_rescan_args)
|
||||
#define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46)
|
||||
#define BTRFS_IOC_GET_FSLABEL FS_IOC_GETFSLABEL
|
||||
#define BTRFS_IOC_SET_FSLABEL FS_IOC_SETFSLABEL
|
||||
#define BTRFS_IOC_GET_DEV_STATS _IOWR(BTRFS_IOCTL_MAGIC, 52, \
|
||||
struct btrfs_ioctl_get_dev_stats)
|
||||
#define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \
|
||||
struct btrfs_ioctl_dev_replace_args)
|
||||
#define BTRFS_IOC_FILE_EXTENT_SAME _IOWR(BTRFS_IOCTL_MAGIC, 54, \
|
||||
struct btrfs_ioctl_same_args)
|
||||
#define BTRFS_IOC_GET_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \
|
||||
struct btrfs_ioctl_feature_flags)
|
||||
#define BTRFS_IOC_SET_FEATURES _IOW(BTRFS_IOCTL_MAGIC, 57, \
|
||||
struct btrfs_ioctl_feature_flags[2])
|
||||
#define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, \
|
||||
struct btrfs_ioctl_feature_flags[3])
|
||||
#define BTRFS_IOC_RM_DEV_V2 _IOW(BTRFS_IOCTL_MAGIC, 58, \
|
||||
struct btrfs_ioctl_vol_args_v2)
|
||||
#define BTRFS_IOC_LOGICAL_INO_V2 _IOWR(BTRFS_IOCTL_MAGIC, 59, \
|
||||
struct btrfs_ioctl_logical_ino_args)
|
||||
#define BTRFS_IOC_GET_SUBVOL_INFO _IOR(BTRFS_IOCTL_MAGIC, 60, \
|
||||
struct btrfs_ioctl_get_subvol_info_args)
|
||||
#define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, \
|
||||
struct btrfs_ioctl_get_subvol_rootref_args)
|
||||
#define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, \
|
||||
struct btrfs_ioctl_ino_lookup_user_args)
|
||||
|
||||
#endif /* _LINUX_BTRFS_H */
|
||||
975
ramdisk/initramfs/glibc_riscv64/usr/include/linux/btrfs_tree.h
Normal file
975
ramdisk/initramfs/glibc_riscv64/usr/include/linux/btrfs_tree.h
Normal file
@ -0,0 +1,975 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _BTRFS_CTREE_H_
|
||||
#define _BTRFS_CTREE_H_
|
||||
|
||||
#include <linux/btrfs.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* This header contains the structure definitions and constants used
|
||||
* by file system objects that can be retrieved using
|
||||
* the BTRFS_IOC_SEARCH_TREE ioctl. That means basically anything that
|
||||
* is needed to describe a leaf node's key or item contents.
|
||||
*/
|
||||
|
||||
/* holds pointers to all of the tree roots */
|
||||
#define BTRFS_ROOT_TREE_OBJECTID 1ULL
|
||||
|
||||
/* stores information about which extents are in use, and reference counts */
|
||||
#define BTRFS_EXTENT_TREE_OBJECTID 2ULL
|
||||
|
||||
/*
|
||||
* chunk tree stores translations from logical -> physical block numbering
|
||||
* the super block points to the chunk tree
|
||||
*/
|
||||
#define BTRFS_CHUNK_TREE_OBJECTID 3ULL
|
||||
|
||||
/*
|
||||
* stores information about which areas of a given device are in use.
|
||||
* one per device. The tree of tree roots points to the device tree
|
||||
*/
|
||||
#define BTRFS_DEV_TREE_OBJECTID 4ULL
|
||||
|
||||
/* one per subvolume, storing files and directories */
|
||||
#define BTRFS_FS_TREE_OBJECTID 5ULL
|
||||
|
||||
/* directory objectid inside the root tree */
|
||||
#define BTRFS_ROOT_TREE_DIR_OBJECTID 6ULL
|
||||
|
||||
/* holds checksums of all the data extents */
|
||||
#define BTRFS_CSUM_TREE_OBJECTID 7ULL
|
||||
|
||||
/* holds quota configuration and tracking */
|
||||
#define BTRFS_QUOTA_TREE_OBJECTID 8ULL
|
||||
|
||||
/* for storing items that use the BTRFS_UUID_KEY* types */
|
||||
#define BTRFS_UUID_TREE_OBJECTID 9ULL
|
||||
|
||||
/* tracks free space in block groups. */
|
||||
#define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
|
||||
|
||||
/* device stats in the device tree */
|
||||
#define BTRFS_DEV_STATS_OBJECTID 0ULL
|
||||
|
||||
/* for storing balance parameters in the root tree */
|
||||
#define BTRFS_BALANCE_OBJECTID -4ULL
|
||||
|
||||
/* orhpan objectid for tracking unlinked/truncated files */
|
||||
#define BTRFS_ORPHAN_OBJECTID -5ULL
|
||||
|
||||
/* does write ahead logging to speed up fsyncs */
|
||||
#define BTRFS_TREE_LOG_OBJECTID -6ULL
|
||||
#define BTRFS_TREE_LOG_FIXUP_OBJECTID -7ULL
|
||||
|
||||
/* for space balancing */
|
||||
#define BTRFS_TREE_RELOC_OBJECTID -8ULL
|
||||
#define BTRFS_DATA_RELOC_TREE_OBJECTID -9ULL
|
||||
|
||||
/*
|
||||
* extent checksums all have this objectid
|
||||
* this allows them to share the logging tree
|
||||
* for fsyncs
|
||||
*/
|
||||
#define BTRFS_EXTENT_CSUM_OBJECTID -10ULL
|
||||
|
||||
/* For storing free space cache */
|
||||
#define BTRFS_FREE_SPACE_OBJECTID -11ULL
|
||||
|
||||
/*
|
||||
* The inode number assigned to the special inode for storing
|
||||
* free ino cache
|
||||
*/
|
||||
#define BTRFS_FREE_INO_OBJECTID -12ULL
|
||||
|
||||
/* dummy objectid represents multiple objectids */
|
||||
#define BTRFS_MULTIPLE_OBJECTIDS -255ULL
|
||||
|
||||
/*
|
||||
* All files have objectids in this range.
|
||||
*/
|
||||
#define BTRFS_FIRST_FREE_OBJECTID 256ULL
|
||||
#define BTRFS_LAST_FREE_OBJECTID -256ULL
|
||||
#define BTRFS_FIRST_CHUNK_TREE_OBJECTID 256ULL
|
||||
|
||||
|
||||
/*
|
||||
* the device items go into the chunk tree. The key is in the form
|
||||
* [ 1 BTRFS_DEV_ITEM_KEY device_id ]
|
||||
*/
|
||||
#define BTRFS_DEV_ITEMS_OBJECTID 1ULL
|
||||
|
||||
#define BTRFS_BTREE_INODE_OBJECTID 1
|
||||
|
||||
#define BTRFS_EMPTY_SUBVOL_DIR_OBJECTID 2
|
||||
|
||||
#define BTRFS_DEV_REPLACE_DEVID 0ULL
|
||||
|
||||
/*
|
||||
* inode items have the data typically returned from stat and store other
|
||||
* info about object characteristics. There is one for every file and dir in
|
||||
* the FS
|
||||
*/
|
||||
#define BTRFS_INODE_ITEM_KEY 1
|
||||
#define BTRFS_INODE_REF_KEY 12
|
||||
#define BTRFS_INODE_EXTREF_KEY 13
|
||||
#define BTRFS_XATTR_ITEM_KEY 24
|
||||
#define BTRFS_ORPHAN_ITEM_KEY 48
|
||||
/* reserve 2-15 close to the inode for later flexibility */
|
||||
|
||||
/*
|
||||
* dir items are the name -> inode pointers in a directory. There is one
|
||||
* for every name in a directory.
|
||||
*/
|
||||
#define BTRFS_DIR_LOG_ITEM_KEY 60
|
||||
#define BTRFS_DIR_LOG_INDEX_KEY 72
|
||||
#define BTRFS_DIR_ITEM_KEY 84
|
||||
#define BTRFS_DIR_INDEX_KEY 96
|
||||
/*
|
||||
* extent data is for file data
|
||||
*/
|
||||
#define BTRFS_EXTENT_DATA_KEY 108
|
||||
|
||||
/*
|
||||
* extent csums are stored in a separate tree and hold csums for
|
||||
* an entire extent on disk.
|
||||
*/
|
||||
#define BTRFS_EXTENT_CSUM_KEY 128
|
||||
|
||||
/*
|
||||
* root items point to tree roots. They are typically in the root
|
||||
* tree used by the super block to find all the other trees
|
||||
*/
|
||||
#define BTRFS_ROOT_ITEM_KEY 132
|
||||
|
||||
/*
|
||||
* root backrefs tie subvols and snapshots to the directory entries that
|
||||
* reference them
|
||||
*/
|
||||
#define BTRFS_ROOT_BACKREF_KEY 144
|
||||
|
||||
/*
|
||||
* root refs make a fast index for listing all of the snapshots and
|
||||
* subvolumes referenced by a given root. They point directly to the
|
||||
* directory item in the root that references the subvol
|
||||
*/
|
||||
#define BTRFS_ROOT_REF_KEY 156
|
||||
|
||||
/*
|
||||
* extent items are in the extent map tree. These record which blocks
|
||||
* are used, and how many references there are to each block
|
||||
*/
|
||||
#define BTRFS_EXTENT_ITEM_KEY 168
|
||||
|
||||
/*
|
||||
* The same as the BTRFS_EXTENT_ITEM_KEY, except it's metadata we already know
|
||||
* the length, so we save the level in key->offset instead of the length.
|
||||
*/
|
||||
#define BTRFS_METADATA_ITEM_KEY 169
|
||||
|
||||
#define BTRFS_TREE_BLOCK_REF_KEY 176
|
||||
|
||||
#define BTRFS_EXTENT_DATA_REF_KEY 178
|
||||
|
||||
#define BTRFS_EXTENT_REF_V0_KEY 180
|
||||
|
||||
#define BTRFS_SHARED_BLOCK_REF_KEY 182
|
||||
|
||||
#define BTRFS_SHARED_DATA_REF_KEY 184
|
||||
|
||||
/*
|
||||
* block groups give us hints into the extent allocation trees. Which
|
||||
* blocks are free etc etc
|
||||
*/
|
||||
#define BTRFS_BLOCK_GROUP_ITEM_KEY 192
|
||||
|
||||
/*
|
||||
* Every block group is represented in the free space tree by a free space info
|
||||
* item, which stores some accounting information. It is keyed on
|
||||
* (block_group_start, FREE_SPACE_INFO, block_group_length).
|
||||
*/
|
||||
#define BTRFS_FREE_SPACE_INFO_KEY 198
|
||||
|
||||
/*
|
||||
* A free space extent tracks an extent of space that is free in a block group.
|
||||
* It is keyed on (start, FREE_SPACE_EXTENT, length).
|
||||
*/
|
||||
#define BTRFS_FREE_SPACE_EXTENT_KEY 199
|
||||
|
||||
/*
|
||||
* When a block group becomes very fragmented, we convert it to use bitmaps
|
||||
* instead of extents. A free space bitmap is keyed on
|
||||
* (start, FREE_SPACE_BITMAP, length); the corresponding item is a bitmap with
|
||||
* (length / sectorsize) bits.
|
||||
*/
|
||||
#define BTRFS_FREE_SPACE_BITMAP_KEY 200
|
||||
|
||||
#define BTRFS_DEV_EXTENT_KEY 204
|
||||
#define BTRFS_DEV_ITEM_KEY 216
|
||||
#define BTRFS_CHUNK_ITEM_KEY 228
|
||||
|
||||
/*
|
||||
* Records the overall state of the qgroups.
|
||||
* There's only one instance of this key present,
|
||||
* (0, BTRFS_QGROUP_STATUS_KEY, 0)
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_KEY 240
|
||||
/*
|
||||
* Records the currently used space of the qgroup.
|
||||
* One key per qgroup, (0, BTRFS_QGROUP_INFO_KEY, qgroupid).
|
||||
*/
|
||||
#define BTRFS_QGROUP_INFO_KEY 242
|
||||
/*
|
||||
* Contains the user configured limits for the qgroup.
|
||||
* One key per qgroup, (0, BTRFS_QGROUP_LIMIT_KEY, qgroupid).
|
||||
*/
|
||||
#define BTRFS_QGROUP_LIMIT_KEY 244
|
||||
/*
|
||||
* Records the child-parent relationship of qgroups. For
|
||||
* each relation, 2 keys are present:
|
||||
* (childid, BTRFS_QGROUP_RELATION_KEY, parentid)
|
||||
* (parentid, BTRFS_QGROUP_RELATION_KEY, childid)
|
||||
*/
|
||||
#define BTRFS_QGROUP_RELATION_KEY 246
|
||||
|
||||
/*
|
||||
* Obsolete name, see BTRFS_TEMPORARY_ITEM_KEY.
|
||||
*/
|
||||
#define BTRFS_BALANCE_ITEM_KEY 248
|
||||
|
||||
/*
|
||||
* The key type for tree items that are stored persistently, but do not need to
|
||||
* exist for extended period of time. The items can exist in any tree.
|
||||
*
|
||||
* [subtype, BTRFS_TEMPORARY_ITEM_KEY, data]
|
||||
*
|
||||
* Existing items:
|
||||
*
|
||||
* - balance status item
|
||||
* (BTRFS_BALANCE_OBJECTID, BTRFS_TEMPORARY_ITEM_KEY, 0)
|
||||
*/
|
||||
#define BTRFS_TEMPORARY_ITEM_KEY 248
|
||||
|
||||
/*
|
||||
* Obsolete name, see BTRFS_PERSISTENT_ITEM_KEY
|
||||
*/
|
||||
#define BTRFS_DEV_STATS_KEY 249
|
||||
|
||||
/*
|
||||
* The key type for tree items that are stored persistently and usually exist
|
||||
* for a long period, eg. filesystem lifetime. The item kinds can be status
|
||||
* information, stats or preference values. The item can exist in any tree.
|
||||
*
|
||||
* [subtype, BTRFS_PERSISTENT_ITEM_KEY, data]
|
||||
*
|
||||
* Existing items:
|
||||
*
|
||||
* - device statistics, store IO stats in the device tree, one key for all
|
||||
* stats
|
||||
* (BTRFS_DEV_STATS_OBJECTID, BTRFS_DEV_STATS_KEY, 0)
|
||||
*/
|
||||
#define BTRFS_PERSISTENT_ITEM_KEY 249
|
||||
|
||||
/*
|
||||
* Persistantly stores the device replace state in the device tree.
|
||||
* The key is built like this: (0, BTRFS_DEV_REPLACE_KEY, 0).
|
||||
*/
|
||||
#define BTRFS_DEV_REPLACE_KEY 250
|
||||
|
||||
/*
|
||||
* Stores items that allow to quickly map UUIDs to something else.
|
||||
* These items are part of the filesystem UUID tree.
|
||||
* The key is built like this:
|
||||
* (UUID_upper_64_bits, BTRFS_UUID_KEY*, UUID_lower_64_bits).
|
||||
*/
|
||||
#if BTRFS_UUID_SIZE != 16
|
||||
#error "UUID items require BTRFS_UUID_SIZE == 16!"
|
||||
#endif
|
||||
#define BTRFS_UUID_KEY_SUBVOL 251 /* for UUIDs assigned to subvols */
|
||||
#define BTRFS_UUID_KEY_RECEIVED_SUBVOL 252 /* for UUIDs assigned to
|
||||
* received subvols */
|
||||
|
||||
/*
|
||||
* string items are for debugging. They just store a short string of
|
||||
* data in the FS
|
||||
*/
|
||||
#define BTRFS_STRING_ITEM_KEY 253
|
||||
|
||||
|
||||
|
||||
/* 32 bytes in various csum fields */
|
||||
#define BTRFS_CSUM_SIZE 32
|
||||
|
||||
/* csum types */
|
||||
enum btrfs_csum_type {
|
||||
BTRFS_CSUM_TYPE_CRC32 = 0,
|
||||
};
|
||||
|
||||
/*
|
||||
* flags definitions for directory entry item type
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_dir_item.type
|
||||
*
|
||||
* Values 0..7 must match common file type values in fs_types.h.
|
||||
*/
|
||||
#define BTRFS_FT_UNKNOWN 0
|
||||
#define BTRFS_FT_REG_FILE 1
|
||||
#define BTRFS_FT_DIR 2
|
||||
#define BTRFS_FT_CHRDEV 3
|
||||
#define BTRFS_FT_BLKDEV 4
|
||||
#define BTRFS_FT_FIFO 5
|
||||
#define BTRFS_FT_SOCK 6
|
||||
#define BTRFS_FT_SYMLINK 7
|
||||
#define BTRFS_FT_XATTR 8
|
||||
#define BTRFS_FT_MAX 9
|
||||
|
||||
/*
|
||||
* The key defines the order in the tree, and so it also defines (optimal)
|
||||
* block layout.
|
||||
*
|
||||
* objectid corresponds to the inode number.
|
||||
*
|
||||
* type tells us things about the object, and is a kind of stream selector.
|
||||
* so for a given inode, keys with type of 1 might refer to the inode data,
|
||||
* type of 2 may point to file data in the btree and type == 3 may point to
|
||||
* extents.
|
||||
*
|
||||
* offset is the starting byte offset for this key in the stream.
|
||||
*
|
||||
* btrfs_disk_key is in disk byte order. struct btrfs_key is always
|
||||
* in cpu native order. Otherwise they are identical and their sizes
|
||||
* should be the same (ie both packed)
|
||||
*/
|
||||
struct btrfs_disk_key {
|
||||
__le64 objectid;
|
||||
__u8 type;
|
||||
__le64 offset;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_key {
|
||||
__u64 objectid;
|
||||
__u8 type;
|
||||
__u64 offset;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_dev_item {
|
||||
/* the internal btrfs device id */
|
||||
__le64 devid;
|
||||
|
||||
/* size of the device */
|
||||
__le64 total_bytes;
|
||||
|
||||
/* bytes used */
|
||||
__le64 bytes_used;
|
||||
|
||||
/* optimal io alignment for this device */
|
||||
__le32 io_align;
|
||||
|
||||
/* optimal io width for this device */
|
||||
__le32 io_width;
|
||||
|
||||
/* minimal io size for this device */
|
||||
__le32 sector_size;
|
||||
|
||||
/* type and info about this device */
|
||||
__le64 type;
|
||||
|
||||
/* expected generation for this device */
|
||||
__le64 generation;
|
||||
|
||||
/*
|
||||
* starting byte of this partition on the device,
|
||||
* to allow for stripe alignment in the future
|
||||
*/
|
||||
__le64 start_offset;
|
||||
|
||||
/* grouping information for allocation decisions */
|
||||
__le32 dev_group;
|
||||
|
||||
/* seek speed 0-100 where 100 is fastest */
|
||||
__u8 seek_speed;
|
||||
|
||||
/* bandwidth 0-100 where 100 is fastest */
|
||||
__u8 bandwidth;
|
||||
|
||||
/* btrfs generated uuid for this device */
|
||||
__u8 uuid[BTRFS_UUID_SIZE];
|
||||
|
||||
/* uuid of FS who owns this device */
|
||||
__u8 fsid[BTRFS_UUID_SIZE];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_stripe {
|
||||
__le64 devid;
|
||||
__le64 offset;
|
||||
__u8 dev_uuid[BTRFS_UUID_SIZE];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_chunk {
|
||||
/* size of this chunk in bytes */
|
||||
__le64 length;
|
||||
|
||||
/* objectid of the root referencing this chunk */
|
||||
__le64 owner;
|
||||
|
||||
__le64 stripe_len;
|
||||
__le64 type;
|
||||
|
||||
/* optimal io alignment for this chunk */
|
||||
__le32 io_align;
|
||||
|
||||
/* optimal io width for this chunk */
|
||||
__le32 io_width;
|
||||
|
||||
/* minimal io size for this chunk */
|
||||
__le32 sector_size;
|
||||
|
||||
/* 2^16 stripes is quite a lot, a second limit is the size of a single
|
||||
* item in the btree
|
||||
*/
|
||||
__le16 num_stripes;
|
||||
|
||||
/* sub stripes only matter for raid10 */
|
||||
__le16 sub_stripes;
|
||||
struct btrfs_stripe stripe;
|
||||
/* additional stripes go here */
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_FREE_SPACE_EXTENT 1
|
||||
#define BTRFS_FREE_SPACE_BITMAP 2
|
||||
|
||||
struct btrfs_free_space_entry {
|
||||
__le64 offset;
|
||||
__le64 bytes;
|
||||
__u8 type;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_free_space_header {
|
||||
struct btrfs_disk_key location;
|
||||
__le64 generation;
|
||||
__le64 num_entries;
|
||||
__le64 num_bitmaps;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_HEADER_FLAG_WRITTEN (1ULL << 0)
|
||||
#define BTRFS_HEADER_FLAG_RELOC (1ULL << 1)
|
||||
|
||||
/* Super block flags */
|
||||
/* Errors detected */
|
||||
#define BTRFS_SUPER_FLAG_ERROR (1ULL << 2)
|
||||
|
||||
#define BTRFS_SUPER_FLAG_SEEDING (1ULL << 32)
|
||||
#define BTRFS_SUPER_FLAG_METADUMP (1ULL << 33)
|
||||
#define BTRFS_SUPER_FLAG_METADUMP_V2 (1ULL << 34)
|
||||
#define BTRFS_SUPER_FLAG_CHANGING_FSID (1ULL << 35)
|
||||
#define BTRFS_SUPER_FLAG_CHANGING_FSID_V2 (1ULL << 36)
|
||||
|
||||
|
||||
/*
|
||||
* items in the extent btree are used to record the objectid of the
|
||||
* owner of the block and the number of references
|
||||
*/
|
||||
|
||||
struct btrfs_extent_item {
|
||||
__le64 refs;
|
||||
__le64 generation;
|
||||
__le64 flags;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_item_v0 {
|
||||
__le32 refs;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
|
||||
#define BTRFS_EXTENT_FLAG_DATA (1ULL << 0)
|
||||
#define BTRFS_EXTENT_FLAG_TREE_BLOCK (1ULL << 1)
|
||||
|
||||
/* following flags only apply to tree blocks */
|
||||
|
||||
/* use full backrefs for extent pointers in the block */
|
||||
#define BTRFS_BLOCK_FLAG_FULL_BACKREF (1ULL << 8)
|
||||
|
||||
/*
|
||||
* this flag is only used internally by scrub and may be changed at any time
|
||||
* it is only declared here to avoid collisions
|
||||
*/
|
||||
#define BTRFS_EXTENT_FLAG_SUPER (1ULL << 48)
|
||||
|
||||
struct btrfs_tree_block_info {
|
||||
struct btrfs_disk_key key;
|
||||
__u8 level;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_data_ref {
|
||||
__le64 root;
|
||||
__le64 objectid;
|
||||
__le64 offset;
|
||||
__le32 count;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_shared_data_ref {
|
||||
__le32 count;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_inline_ref {
|
||||
__u8 type;
|
||||
__le64 offset;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/* old style backrefs item */
|
||||
struct btrfs_extent_ref_v0 {
|
||||
__le64 root;
|
||||
__le64 generation;
|
||||
__le64 objectid;
|
||||
__le32 count;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
|
||||
/* dev extents record free space on individual devices. The owner
|
||||
* field points back to the chunk allocation mapping tree that allocated
|
||||
* the extent. The chunk tree uuid field is a way to double check the owner
|
||||
*/
|
||||
struct btrfs_dev_extent {
|
||||
__le64 chunk_tree;
|
||||
__le64 chunk_objectid;
|
||||
__le64 chunk_offset;
|
||||
__le64 length;
|
||||
__u8 chunk_tree_uuid[BTRFS_UUID_SIZE];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_inode_ref {
|
||||
__le64 index;
|
||||
__le16 name_len;
|
||||
/* name goes here */
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_inode_extref {
|
||||
__le64 parent_objectid;
|
||||
__le64 index;
|
||||
__le16 name_len;
|
||||
__u8 name[0];
|
||||
/* name goes here */
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_timespec {
|
||||
__le64 sec;
|
||||
__le32 nsec;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_inode_item {
|
||||
/* nfs style generation number */
|
||||
__le64 generation;
|
||||
/* transid that last touched this inode */
|
||||
__le64 transid;
|
||||
__le64 size;
|
||||
__le64 nbytes;
|
||||
__le64 block_group;
|
||||
__le32 nlink;
|
||||
__le32 uid;
|
||||
__le32 gid;
|
||||
__le32 mode;
|
||||
__le64 rdev;
|
||||
__le64 flags;
|
||||
|
||||
/* modification sequence number for NFS */
|
||||
__le64 sequence;
|
||||
|
||||
/*
|
||||
* a little future expansion, for more than this we can
|
||||
* just grow the inode item and version it
|
||||
*/
|
||||
__le64 reserved[4];
|
||||
struct btrfs_timespec atime;
|
||||
struct btrfs_timespec ctime;
|
||||
struct btrfs_timespec mtime;
|
||||
struct btrfs_timespec otime;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_dir_log_item {
|
||||
__le64 end;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_dir_item {
|
||||
struct btrfs_disk_key location;
|
||||
__le64 transid;
|
||||
__le16 data_len;
|
||||
__le16 name_len;
|
||||
__u8 type;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_ROOT_SUBVOL_RDONLY (1ULL << 0)
|
||||
|
||||
/*
|
||||
* Internal in-memory flag that a subvolume has been marked for deletion but
|
||||
* still visible as a directory
|
||||
*/
|
||||
#define BTRFS_ROOT_SUBVOL_DEAD (1ULL << 48)
|
||||
|
||||
struct btrfs_root_item {
|
||||
struct btrfs_inode_item inode;
|
||||
__le64 generation;
|
||||
__le64 root_dirid;
|
||||
__le64 bytenr;
|
||||
__le64 byte_limit;
|
||||
__le64 bytes_used;
|
||||
__le64 last_snapshot;
|
||||
__le64 flags;
|
||||
__le32 refs;
|
||||
struct btrfs_disk_key drop_progress;
|
||||
__u8 drop_level;
|
||||
__u8 level;
|
||||
|
||||
/*
|
||||
* The following fields appear after subvol_uuids+subvol_times
|
||||
* were introduced.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This generation number is used to test if the new fields are valid
|
||||
* and up to date while reading the root item. Every time the root item
|
||||
* is written out, the "generation" field is copied into this field. If
|
||||
* anyone ever mounted the fs with an older kernel, we will have
|
||||
* mismatching generation values here and thus must invalidate the
|
||||
* new fields. See btrfs_update_root and btrfs_find_last_root for
|
||||
* details.
|
||||
* the offset of generation_v2 is also used as the start for the memset
|
||||
* when invalidating the fields.
|
||||
*/
|
||||
__le64 generation_v2;
|
||||
__u8 uuid[BTRFS_UUID_SIZE];
|
||||
__u8 parent_uuid[BTRFS_UUID_SIZE];
|
||||
__u8 received_uuid[BTRFS_UUID_SIZE];
|
||||
__le64 ctransid; /* updated when an inode changes */
|
||||
__le64 otransid; /* trans when created */
|
||||
__le64 stransid; /* trans when sent. non-zero for received subvol */
|
||||
__le64 rtransid; /* trans when received. non-zero for received subvol */
|
||||
struct btrfs_timespec ctime;
|
||||
struct btrfs_timespec otime;
|
||||
struct btrfs_timespec stime;
|
||||
struct btrfs_timespec rtime;
|
||||
__le64 reserved[8]; /* for future */
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/*
|
||||
* this is used for both forward and backward root refs
|
||||
*/
|
||||
struct btrfs_root_ref {
|
||||
__le64 dirid;
|
||||
__le64 sequence;
|
||||
__le16 name_len;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_disk_balance_args {
|
||||
/*
|
||||
* profiles to operate on, single is denoted by
|
||||
* BTRFS_AVAIL_ALLOC_BIT_SINGLE
|
||||
*/
|
||||
__le64 profiles;
|
||||
|
||||
/*
|
||||
* usage filter
|
||||
* BTRFS_BALANCE_ARGS_USAGE with a single value means '0..N'
|
||||
* BTRFS_BALANCE_ARGS_USAGE_RANGE - range syntax, min..max
|
||||
*/
|
||||
union {
|
||||
__le64 usage;
|
||||
struct {
|
||||
__le32 usage_min;
|
||||
__le32 usage_max;
|
||||
};
|
||||
};
|
||||
|
||||
/* devid filter */
|
||||
__le64 devid;
|
||||
|
||||
/* devid subset filter [pstart..pend) */
|
||||
__le64 pstart;
|
||||
__le64 pend;
|
||||
|
||||
/* btrfs virtual address space subset filter [vstart..vend) */
|
||||
__le64 vstart;
|
||||
__le64 vend;
|
||||
|
||||
/*
|
||||
* profile to convert to, single is denoted by
|
||||
* BTRFS_AVAIL_ALLOC_BIT_SINGLE
|
||||
*/
|
||||
__le64 target;
|
||||
|
||||
/* BTRFS_BALANCE_ARGS_* */
|
||||
__le64 flags;
|
||||
|
||||
/*
|
||||
* BTRFS_BALANCE_ARGS_LIMIT with value 'limit'
|
||||
* BTRFS_BALANCE_ARGS_LIMIT_RANGE - the extend version can use minimum
|
||||
* and maximum
|
||||
*/
|
||||
union {
|
||||
__le64 limit;
|
||||
struct {
|
||||
__le32 limit_min;
|
||||
__le32 limit_max;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Process chunks that cross stripes_min..stripes_max devices,
|
||||
* BTRFS_BALANCE_ARGS_STRIPES_RANGE
|
||||
*/
|
||||
__le32 stripes_min;
|
||||
__le32 stripes_max;
|
||||
|
||||
__le64 unused[6];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/*
|
||||
* store balance parameters to disk so that balance can be properly
|
||||
* resumed after crash or unmount
|
||||
*/
|
||||
struct btrfs_balance_item {
|
||||
/* BTRFS_BALANCE_* */
|
||||
__le64 flags;
|
||||
|
||||
struct btrfs_disk_balance_args data;
|
||||
struct btrfs_disk_balance_args meta;
|
||||
struct btrfs_disk_balance_args sys;
|
||||
|
||||
__le64 unused[4];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_FILE_EXTENT_INLINE 0
|
||||
#define BTRFS_FILE_EXTENT_REG 1
|
||||
#define BTRFS_FILE_EXTENT_PREALLOC 2
|
||||
#define BTRFS_FILE_EXTENT_TYPES 2
|
||||
|
||||
struct btrfs_file_extent_item {
|
||||
/*
|
||||
* transaction id that created this extent
|
||||
*/
|
||||
__le64 generation;
|
||||
/*
|
||||
* max number of bytes to hold this extent in ram
|
||||
* when we split a compressed extent we can't know how big
|
||||
* each of the resulting pieces will be. So, this is
|
||||
* an upper limit on the size of the extent in ram instead of
|
||||
* an exact limit.
|
||||
*/
|
||||
__le64 ram_bytes;
|
||||
|
||||
/*
|
||||
* 32 bits for the various ways we might encode the data,
|
||||
* including compression and encryption. If any of these
|
||||
* are set to something a given disk format doesn't understand
|
||||
* it is treated like an incompat flag for reading and writing,
|
||||
* but not for stat.
|
||||
*/
|
||||
__u8 compression;
|
||||
__u8 encryption;
|
||||
__le16 other_encoding; /* spare for later use */
|
||||
|
||||
/* are we __inline__ data or a real extent? */
|
||||
__u8 type;
|
||||
|
||||
/*
|
||||
* disk space consumed by the extent, checksum blocks are included
|
||||
* in these numbers
|
||||
*
|
||||
* At this offset in the structure, the __inline__ extent data start.
|
||||
*/
|
||||
__le64 disk_bytenr;
|
||||
__le64 disk_num_bytes;
|
||||
/*
|
||||
* the logical offset in file blocks (no csums)
|
||||
* this extent record is for. This allows a file extent to point
|
||||
* into the middle of an existing extent on disk, sharing it
|
||||
* between two snapshots (useful if some bytes in the middle of the
|
||||
* extent have changed
|
||||
*/
|
||||
__le64 offset;
|
||||
/*
|
||||
* the logical number of file blocks (no csums included). This
|
||||
* always reflects the size uncompressed and without encoding.
|
||||
*/
|
||||
__le64 num_bytes;
|
||||
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_csum_item {
|
||||
__u8 csum;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_dev_stats_item {
|
||||
/*
|
||||
* grow this item struct at the end for future enhancements and keep
|
||||
* the existing values unchanged
|
||||
*/
|
||||
__le64 values[BTRFS_DEV_STAT_VALUES_MAX];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_DEV_REPLACE_ITEM_CONT_READING_FROM_SRCDEV_MODE_ALWAYS 0
|
||||
#define BTRFS_DEV_REPLACE_ITEM_CONT_READING_FROM_SRCDEV_MODE_AVOID 1
|
||||
|
||||
struct btrfs_dev_replace_item {
|
||||
/*
|
||||
* grow this item struct at the end for future enhancements and keep
|
||||
* the existing values unchanged
|
||||
*/
|
||||
__le64 src_devid;
|
||||
__le64 cursor_left;
|
||||
__le64 cursor_right;
|
||||
__le64 cont_reading_from_srcdev_mode;
|
||||
|
||||
__le64 replace_state;
|
||||
__le64 time_started;
|
||||
__le64 time_stopped;
|
||||
__le64 num_write_errors;
|
||||
__le64 num_uncorrectable_read_errors;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/* different types of block groups (and chunks) */
|
||||
#define BTRFS_BLOCK_GROUP_DATA (1ULL << 0)
|
||||
#define BTRFS_BLOCK_GROUP_SYSTEM (1ULL << 1)
|
||||
#define BTRFS_BLOCK_GROUP_METADATA (1ULL << 2)
|
||||
#define BTRFS_BLOCK_GROUP_RAID0 (1ULL << 3)
|
||||
#define BTRFS_BLOCK_GROUP_RAID1 (1ULL << 4)
|
||||
#define BTRFS_BLOCK_GROUP_DUP (1ULL << 5)
|
||||
#define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
|
||||
#define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7)
|
||||
#define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
|
||||
#define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \
|
||||
BTRFS_SPACE_INFO_GLOBAL_RSV)
|
||||
|
||||
enum btrfs_raid_types {
|
||||
BTRFS_RAID_RAID10,
|
||||
BTRFS_RAID_RAID1,
|
||||
BTRFS_RAID_DUP,
|
||||
BTRFS_RAID_RAID0,
|
||||
BTRFS_RAID_SINGLE,
|
||||
BTRFS_RAID_RAID5,
|
||||
BTRFS_RAID_RAID6,
|
||||
BTRFS_NR_RAID_TYPES
|
||||
};
|
||||
|
||||
#define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \
|
||||
BTRFS_BLOCK_GROUP_SYSTEM | \
|
||||
BTRFS_BLOCK_GROUP_METADATA)
|
||||
|
||||
#define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \
|
||||
BTRFS_BLOCK_GROUP_RAID1 | \
|
||||
BTRFS_BLOCK_GROUP_RAID5 | \
|
||||
BTRFS_BLOCK_GROUP_RAID6 | \
|
||||
BTRFS_BLOCK_GROUP_DUP | \
|
||||
BTRFS_BLOCK_GROUP_RAID10)
|
||||
#define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | \
|
||||
BTRFS_BLOCK_GROUP_RAID6)
|
||||
|
||||
#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1)
|
||||
|
||||
/*
|
||||
* We need a bit for restriper to be able to tell when chunks of type
|
||||
* SINGLE are available. This "extended" profile format is used in
|
||||
* fs_info->avail_*_alloc_bits (in-memory) and balance item fields
|
||||
* (on-disk). The corresponding on-disk bit in chunk.type is reserved
|
||||
* to avoid remappings between two formats in future.
|
||||
*/
|
||||
#define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48)
|
||||
|
||||
/*
|
||||
* A fake block group type that is used to communicate global block reserve
|
||||
* size to userspace via the SPACE_INFO ioctl.
|
||||
*/
|
||||
#define BTRFS_SPACE_INFO_GLOBAL_RSV (1ULL << 49)
|
||||
|
||||
#define BTRFS_EXTENDED_PROFILE_MASK (BTRFS_BLOCK_GROUP_PROFILE_MASK | \
|
||||
BTRFS_AVAIL_ALLOC_BIT_SINGLE)
|
||||
|
||||
static __inline__ __u64 chunk_to_extended(__u64 flags)
|
||||
{
|
||||
if ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0)
|
||||
flags |= BTRFS_AVAIL_ALLOC_BIT_SINGLE;
|
||||
|
||||
return flags;
|
||||
}
|
||||
static __inline__ __u64 extended_to_chunk(__u64 flags)
|
||||
{
|
||||
return flags & ~BTRFS_AVAIL_ALLOC_BIT_SINGLE;
|
||||
}
|
||||
|
||||
struct btrfs_block_group_item {
|
||||
__le64 used;
|
||||
__le64 chunk_objectid;
|
||||
__le64 flags;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_free_space_info {
|
||||
__le32 extent_count;
|
||||
__le32 flags;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_FREE_SPACE_USING_BITMAPS (1ULL << 0)
|
||||
|
||||
#define BTRFS_QGROUP_LEVEL_SHIFT 48
|
||||
static __inline__ __u64 btrfs_qgroup_level(__u64 qgroupid)
|
||||
{
|
||||
return qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT;
|
||||
}
|
||||
|
||||
/*
|
||||
* is subvolume quota turned on?
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
|
||||
/*
|
||||
* RESCAN is set during the initialization phase
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
|
||||
/*
|
||||
* Some qgroup entries are known to be out of date,
|
||||
* either because the configuration has changed in a way that
|
||||
* makes a rescan necessary, or because the fs has been mounted
|
||||
* with a non-qgroup-aware version.
|
||||
* Turning qouta off and on again makes it inconsistent, too.
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
|
||||
|
||||
#define BTRFS_QGROUP_STATUS_VERSION 1
|
||||
|
||||
struct btrfs_qgroup_status_item {
|
||||
__le64 version;
|
||||
/*
|
||||
* the generation is updated during every commit. As older
|
||||
* versions of btrfs are not aware of qgroups, it will be
|
||||
* possible to detect inconsistencies by checking the
|
||||
* generation on mount time
|
||||
*/
|
||||
__le64 generation;
|
||||
|
||||
/* flag definitions see above */
|
||||
__le64 flags;
|
||||
|
||||
/*
|
||||
* only used during scanning to record the progress
|
||||
* of the scan. It contains a logical address
|
||||
*/
|
||||
__le64 rescan;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_qgroup_info_item {
|
||||
__le64 generation;
|
||||
__le64 rfer;
|
||||
__le64 rfer_cmpr;
|
||||
__le64 excl;
|
||||
__le64 excl_cmpr;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_qgroup_limit_item {
|
||||
/*
|
||||
* only updated when any of the other values change
|
||||
*/
|
||||
__le64 flags;
|
||||
__le64 max_rfer;
|
||||
__le64 max_excl;
|
||||
__le64 rsv_rfer;
|
||||
__le64 rsv_excl;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#endif /* _BTRFS_CTREE_H_ */
|
||||
@ -0,0 +1,106 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H
|
||||
#define _LINUX_BYTEORDER_BIG_ENDIAN_H
|
||||
|
||||
#ifndef __BIG_ENDIAN
|
||||
#define __BIG_ENDIAN 4321
|
||||
#endif
|
||||
#ifndef __BIG_ENDIAN_BITFIELD
|
||||
#define __BIG_ENDIAN_BITFIELD
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/swab.h>
|
||||
|
||||
#define __constant_htonl(x) ((__be32)(__u32)(x))
|
||||
#define __constant_ntohl(x) ((__u32)(__be32)(x))
|
||||
#define __constant_htons(x) ((__be16)(__u16)(x))
|
||||
#define __constant_ntohs(x) ((__u16)(__be16)(x))
|
||||
#define __constant_cpu_to_le64(x) ((__le64)___constant_swab64((x)))
|
||||
#define __constant_le64_to_cpu(x) ___constant_swab64((__u64)(__le64)(x))
|
||||
#define __constant_cpu_to_le32(x) ((__le32)___constant_swab32((x)))
|
||||
#define __constant_le32_to_cpu(x) ___constant_swab32((__u32)(__le32)(x))
|
||||
#define __constant_cpu_to_le16(x) ((__le16)___constant_swab16((x)))
|
||||
#define __constant_le16_to_cpu(x) ___constant_swab16((__u16)(__le16)(x))
|
||||
#define __constant_cpu_to_be64(x) ((__be64)(__u64)(x))
|
||||
#define __constant_be64_to_cpu(x) ((__u64)(__be64)(x))
|
||||
#define __constant_cpu_to_be32(x) ((__be32)(__u32)(x))
|
||||
#define __constant_be32_to_cpu(x) ((__u32)(__be32)(x))
|
||||
#define __constant_cpu_to_be16(x) ((__be16)(__u16)(x))
|
||||
#define __constant_be16_to_cpu(x) ((__u16)(__be16)(x))
|
||||
#define __cpu_to_le64(x) ((__le64)__swab64((x)))
|
||||
#define __le64_to_cpu(x) __swab64((__u64)(__le64)(x))
|
||||
#define __cpu_to_le32(x) ((__le32)__swab32((x)))
|
||||
#define __le32_to_cpu(x) __swab32((__u32)(__le32)(x))
|
||||
#define __cpu_to_le16(x) ((__le16)__swab16((x)))
|
||||
#define __le16_to_cpu(x) __swab16((__u16)(__le16)(x))
|
||||
#define __cpu_to_be64(x) ((__be64)(__u64)(x))
|
||||
#define __be64_to_cpu(x) ((__u64)(__be64)(x))
|
||||
#define __cpu_to_be32(x) ((__be32)(__u32)(x))
|
||||
#define __be32_to_cpu(x) ((__u32)(__be32)(x))
|
||||
#define __cpu_to_be16(x) ((__be16)(__u16)(x))
|
||||
#define __be16_to_cpu(x) ((__u16)(__be16)(x))
|
||||
|
||||
static __always_inline __le64 __cpu_to_le64p(const __u64 *p)
|
||||
{
|
||||
return (__le64)__swab64p(p);
|
||||
}
|
||||
static __always_inline __u64 __le64_to_cpup(const __le64 *p)
|
||||
{
|
||||
return __swab64p((__u64 *)p);
|
||||
}
|
||||
static __always_inline __le32 __cpu_to_le32p(const __u32 *p)
|
||||
{
|
||||
return (__le32)__swab32p(p);
|
||||
}
|
||||
static __always_inline __u32 __le32_to_cpup(const __le32 *p)
|
||||
{
|
||||
return __swab32p((__u32 *)p);
|
||||
}
|
||||
static __always_inline __le16 __cpu_to_le16p(const __u16 *p)
|
||||
{
|
||||
return (__le16)__swab16p(p);
|
||||
}
|
||||
static __always_inline __u16 __le16_to_cpup(const __le16 *p)
|
||||
{
|
||||
return __swab16p((__u16 *)p);
|
||||
}
|
||||
static __always_inline __be64 __cpu_to_be64p(const __u64 *p)
|
||||
{
|
||||
return (__be64)*p;
|
||||
}
|
||||
static __always_inline __u64 __be64_to_cpup(const __be64 *p)
|
||||
{
|
||||
return (__u64)*p;
|
||||
}
|
||||
static __always_inline __be32 __cpu_to_be32p(const __u32 *p)
|
||||
{
|
||||
return (__be32)*p;
|
||||
}
|
||||
static __always_inline __u32 __be32_to_cpup(const __be32 *p)
|
||||
{
|
||||
return (__u32)*p;
|
||||
}
|
||||
static __always_inline __be16 __cpu_to_be16p(const __u16 *p)
|
||||
{
|
||||
return (__be16)*p;
|
||||
}
|
||||
static __always_inline __u16 __be16_to_cpup(const __be16 *p)
|
||||
{
|
||||
return (__u16)*p;
|
||||
}
|
||||
#define __cpu_to_le64s(x) __swab64s((x))
|
||||
#define __le64_to_cpus(x) __swab64s((x))
|
||||
#define __cpu_to_le32s(x) __swab32s((x))
|
||||
#define __le32_to_cpus(x) __swab32s((x))
|
||||
#define __cpu_to_le16s(x) __swab16s((x))
|
||||
#define __le16_to_cpus(x) __swab16s((x))
|
||||
#define __cpu_to_be64s(x) do { (void)(x); } while (0)
|
||||
#define __be64_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_be32s(x) do { (void)(x); } while (0)
|
||||
#define __be32_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_be16s(x) do { (void)(x); } while (0)
|
||||
#define __be16_to_cpus(x) do { (void)(x); } while (0)
|
||||
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */
|
||||
@ -0,0 +1,106 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H
|
||||
#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
|
||||
|
||||
#ifndef __LITTLE_ENDIAN
|
||||
#define __LITTLE_ENDIAN 1234
|
||||
#endif
|
||||
#ifndef __LITTLE_ENDIAN_BITFIELD
|
||||
#define __LITTLE_ENDIAN_BITFIELD
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/swab.h>
|
||||
|
||||
#define __constant_htonl(x) ((__be32)___constant_swab32((x)))
|
||||
#define __constant_ntohl(x) ___constant_swab32((__be32)(x))
|
||||
#define __constant_htons(x) ((__be16)___constant_swab16((x)))
|
||||
#define __constant_ntohs(x) ___constant_swab16((__be16)(x))
|
||||
#define __constant_cpu_to_le64(x) ((__le64)(__u64)(x))
|
||||
#define __constant_le64_to_cpu(x) ((__u64)(__le64)(x))
|
||||
#define __constant_cpu_to_le32(x) ((__le32)(__u32)(x))
|
||||
#define __constant_le32_to_cpu(x) ((__u32)(__le32)(x))
|
||||
#define __constant_cpu_to_le16(x) ((__le16)(__u16)(x))
|
||||
#define __constant_le16_to_cpu(x) ((__u16)(__le16)(x))
|
||||
#define __constant_cpu_to_be64(x) ((__be64)___constant_swab64((x)))
|
||||
#define __constant_be64_to_cpu(x) ___constant_swab64((__u64)(__be64)(x))
|
||||
#define __constant_cpu_to_be32(x) ((__be32)___constant_swab32((x)))
|
||||
#define __constant_be32_to_cpu(x) ___constant_swab32((__u32)(__be32)(x))
|
||||
#define __constant_cpu_to_be16(x) ((__be16)___constant_swab16((x)))
|
||||
#define __constant_be16_to_cpu(x) ___constant_swab16((__u16)(__be16)(x))
|
||||
#define __cpu_to_le64(x) ((__le64)(__u64)(x))
|
||||
#define __le64_to_cpu(x) ((__u64)(__le64)(x))
|
||||
#define __cpu_to_le32(x) ((__le32)(__u32)(x))
|
||||
#define __le32_to_cpu(x) ((__u32)(__le32)(x))
|
||||
#define __cpu_to_le16(x) ((__le16)(__u16)(x))
|
||||
#define __le16_to_cpu(x) ((__u16)(__le16)(x))
|
||||
#define __cpu_to_be64(x) ((__be64)__swab64((x)))
|
||||
#define __be64_to_cpu(x) __swab64((__u64)(__be64)(x))
|
||||
#define __cpu_to_be32(x) ((__be32)__swab32((x)))
|
||||
#define __be32_to_cpu(x) __swab32((__u32)(__be32)(x))
|
||||
#define __cpu_to_be16(x) ((__be16)__swab16((x)))
|
||||
#define __be16_to_cpu(x) __swab16((__u16)(__be16)(x))
|
||||
|
||||
static __always_inline __le64 __cpu_to_le64p(const __u64 *p)
|
||||
{
|
||||
return (__le64)*p;
|
||||
}
|
||||
static __always_inline __u64 __le64_to_cpup(const __le64 *p)
|
||||
{
|
||||
return (__u64)*p;
|
||||
}
|
||||
static __always_inline __le32 __cpu_to_le32p(const __u32 *p)
|
||||
{
|
||||
return (__le32)*p;
|
||||
}
|
||||
static __always_inline __u32 __le32_to_cpup(const __le32 *p)
|
||||
{
|
||||
return (__u32)*p;
|
||||
}
|
||||
static __always_inline __le16 __cpu_to_le16p(const __u16 *p)
|
||||
{
|
||||
return (__le16)*p;
|
||||
}
|
||||
static __always_inline __u16 __le16_to_cpup(const __le16 *p)
|
||||
{
|
||||
return (__u16)*p;
|
||||
}
|
||||
static __always_inline __be64 __cpu_to_be64p(const __u64 *p)
|
||||
{
|
||||
return (__be64)__swab64p(p);
|
||||
}
|
||||
static __always_inline __u64 __be64_to_cpup(const __be64 *p)
|
||||
{
|
||||
return __swab64p((__u64 *)p);
|
||||
}
|
||||
static __always_inline __be32 __cpu_to_be32p(const __u32 *p)
|
||||
{
|
||||
return (__be32)__swab32p(p);
|
||||
}
|
||||
static __always_inline __u32 __be32_to_cpup(const __be32 *p)
|
||||
{
|
||||
return __swab32p((__u32 *)p);
|
||||
}
|
||||
static __always_inline __be16 __cpu_to_be16p(const __u16 *p)
|
||||
{
|
||||
return (__be16)__swab16p(p);
|
||||
}
|
||||
static __always_inline __u16 __be16_to_cpup(const __be16 *p)
|
||||
{
|
||||
return __swab16p((__u16 *)p);
|
||||
}
|
||||
#define __cpu_to_le64s(x) do { (void)(x); } while (0)
|
||||
#define __le64_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_le32s(x) do { (void)(x); } while (0)
|
||||
#define __le32_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_le16s(x) do { (void)(x); } while (0)
|
||||
#define __le16_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_be64s(x) __swab64s((x))
|
||||
#define __be64_to_cpus(x) __swab64s((x))
|
||||
#define __cpu_to_be32s(x) __swab32s((x))
|
||||
#define __be32_to_cpus(x) __swab32s((x))
|
||||
#define __cpu_to_be16s(x) __swab16s((x))
|
||||
#define __be16_to_cpus(x) __swab16s((x))
|
||||
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */
|
||||
@ -0,0 +1,195 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* linux/caif_socket.h
|
||||
* CAIF Definitions for CAIF socket and network layer
|
||||
* Copyright (C) ST-Ericsson AB 2010
|
||||
* Author: Sjur Brendeland
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CAIF_SOCKET_H
|
||||
#define _LINUX_CAIF_SOCKET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
/**
|
||||
* enum caif_link_selector - Physical Link Selection.
|
||||
* @CAIF_LINK_HIGH_BANDW: Physical interface for high-bandwidth
|
||||
* traffic.
|
||||
* @CAIF_LINK_LOW_LATENCY: Physical interface for low-latency
|
||||
* traffic.
|
||||
*
|
||||
* CAIF Link Layers can register their link properties.
|
||||
* This enum is used for choosing between CAIF Link Layers when
|
||||
* setting up CAIF Channels when multiple CAIF Link Layers exists.
|
||||
*/
|
||||
enum caif_link_selector {
|
||||
CAIF_LINK_HIGH_BANDW,
|
||||
CAIF_LINK_LOW_LATENCY
|
||||
};
|
||||
|
||||
/**
|
||||
* enum caif_channel_priority - CAIF channel priorities.
|
||||
*
|
||||
* @CAIF_PRIO_MIN: Min priority for a channel.
|
||||
* @CAIF_PRIO_LOW: Low-priority channel.
|
||||
* @CAIF_PRIO_NORMAL: Normal/default priority level.
|
||||
* @CAIF_PRIO_HIGH: High priority level
|
||||
* @CAIF_PRIO_MAX: Max priority for channel
|
||||
*
|
||||
* Priority can be set on CAIF Channels in order to
|
||||
* prioritize between traffic on different CAIF Channels.
|
||||
* These priority levels are recommended, but the priority value
|
||||
* is not restricted to the values defined in this enum, any value
|
||||
* between CAIF_PRIO_MIN and CAIF_PRIO_MAX could be used.
|
||||
*/
|
||||
enum caif_channel_priority {
|
||||
CAIF_PRIO_MIN = 0x01,
|
||||
CAIF_PRIO_LOW = 0x04,
|
||||
CAIF_PRIO_NORMAL = 0x0f,
|
||||
CAIF_PRIO_HIGH = 0x14,
|
||||
CAIF_PRIO_MAX = 0x1F
|
||||
};
|
||||
|
||||
/**
|
||||
* enum caif_protocol_type - CAIF Channel type.
|
||||
* @CAIFPROTO_AT: Classic AT channel.
|
||||
* @CAIFPROTO_DATAGRAM: Datagram channel.
|
||||
* @CAIFPROTO_DATAGRAM_LOOP: Datagram loopback channel, used for testing.
|
||||
* @CAIFPROTO_UTIL: Utility (Psock) channel.
|
||||
* @CAIFPROTO_RFM: Remote File Manager
|
||||
* @CAIFPROTO_DEBUG: Debug link
|
||||
*
|
||||
* This enum defines the CAIF Channel type to be used. This defines
|
||||
* the service to connect to on the modem.
|
||||
*/
|
||||
enum caif_protocol_type {
|
||||
CAIFPROTO_AT,
|
||||
CAIFPROTO_DATAGRAM,
|
||||
CAIFPROTO_DATAGRAM_LOOP,
|
||||
CAIFPROTO_UTIL,
|
||||
CAIFPROTO_RFM,
|
||||
CAIFPROTO_DEBUG,
|
||||
_CAIFPROTO_MAX
|
||||
};
|
||||
#define CAIFPROTO_MAX _CAIFPROTO_MAX
|
||||
|
||||
/**
|
||||
* enum caif_at_type - AT Service Endpoint
|
||||
* @CAIF_ATTYPE_PLAIN: Connects to a plain vanilla AT channel.
|
||||
*/
|
||||
enum caif_at_type {
|
||||
CAIF_ATTYPE_PLAIN = 2
|
||||
};
|
||||
/**
|
||||
* enum caif_debug_type - Content selection for debug connection
|
||||
* @CAIF_DEBUG_TRACE_INTERACTIVE: Connection will contain
|
||||
* both trace and interactive debug.
|
||||
* @CAIF_DEBUG_TRACE: Connection contains trace only.
|
||||
* @CAIF_DEBUG_INTERACTIVE: Connection to interactive debug.
|
||||
*/
|
||||
enum caif_debug_type {
|
||||
CAIF_DEBUG_TRACE_INTERACTIVE = 0,
|
||||
CAIF_DEBUG_TRACE,
|
||||
CAIF_DEBUG_INTERACTIVE,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum caif_debug_service - Debug Service Endpoint
|
||||
* @CAIF_RADIO_DEBUG_SERVICE: Debug service on the Radio sub-system
|
||||
* @CAIF_APP_DEBUG_SERVICE: Debug for the applications sub-system
|
||||
*/
|
||||
enum caif_debug_service {
|
||||
CAIF_RADIO_DEBUG_SERVICE = 1,
|
||||
CAIF_APP_DEBUG_SERVICE
|
||||
};
|
||||
|
||||
/**
|
||||
* struct sockaddr_caif - the sockaddr structure for CAIF sockets.
|
||||
* @family: Address family number, must be AF_CAIF.
|
||||
* @u: Union of address data 'switched' by family.
|
||||
* :
|
||||
* @u.at: Applies when family = CAIFPROTO_AT.
|
||||
*
|
||||
* @u.at.type: Type of AT link to set up (enum caif_at_type).
|
||||
*
|
||||
* @u.util: Applies when family = CAIFPROTO_UTIL
|
||||
*
|
||||
* @u.util.service: Utility service name.
|
||||
*
|
||||
* @u.dgm: Applies when family = CAIFPROTO_DATAGRAM
|
||||
*
|
||||
* @u.dgm.connection_id: Datagram connection id.
|
||||
*
|
||||
* @u.dgm.nsapi: NSAPI of the PDP-Context.
|
||||
*
|
||||
* @u.rfm: Applies when family = CAIFPROTO_RFM
|
||||
*
|
||||
* @u.rfm.connection_id: Connection ID for RFM.
|
||||
*
|
||||
* @u.rfm.volume: Volume to mount.
|
||||
*
|
||||
* @u.dbg: Applies when family = CAIFPROTO_DEBUG.
|
||||
*
|
||||
* @u.dbg.type: Type of debug connection to set up
|
||||
* (caif_debug_type).
|
||||
*
|
||||
* @u.dbg.service: Service sub-system to connect (caif_debug_service
|
||||
* Description:
|
||||
* This structure holds the connect parameters used for setting up a
|
||||
* CAIF Channel. It defines the service to connect to on the modem.
|
||||
*/
|
||||
struct sockaddr_caif {
|
||||
__kernel_sa_family_t family;
|
||||
union {
|
||||
struct {
|
||||
__u8 type; /* type: enum caif_at_type */
|
||||
} at; /* CAIFPROTO_AT */
|
||||
struct {
|
||||
char service[16];
|
||||
} util; /* CAIFPROTO_UTIL */
|
||||
union {
|
||||
__u32 connection_id;
|
||||
__u8 nsapi;
|
||||
} dgm; /* CAIFPROTO_DATAGRAM(_LOOP)*/
|
||||
struct {
|
||||
__u32 connection_id;
|
||||
char volume[16];
|
||||
} rfm; /* CAIFPROTO_RFM */
|
||||
struct {
|
||||
__u8 type; /* type:enum caif_debug_type */
|
||||
__u8 service; /* service:caif_debug_service */
|
||||
} dbg; /* CAIFPROTO_DEBUG */
|
||||
} u;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum caif_socket_opts - CAIF option values for getsockopt and setsockopt.
|
||||
*
|
||||
* @CAIFSO_LINK_SELECT: Selector used if multiple CAIF Link layers are
|
||||
* available. Either a high bandwidth
|
||||
* link can be selected (CAIF_LINK_HIGH_BANDW) or
|
||||
* or a low latency link (CAIF_LINK_LOW_LATENCY).
|
||||
* This option is of type __u32.
|
||||
* Alternatively SO_BINDTODEVICE can be used.
|
||||
*
|
||||
* @CAIFSO_REQ_PARAM: Used to set the request parameters for a
|
||||
* utility channel. (maximum 256 bytes). This
|
||||
* option must be set before connecting.
|
||||
*
|
||||
* @CAIFSO_RSP_PARAM: Gets the response parameters for a utility
|
||||
* channel. (maximum 256 bytes). This option
|
||||
* is valid after a successful connect.
|
||||
*
|
||||
*
|
||||
* This enum defines the CAIF Socket options to be used on a socket
|
||||
* of type PF_CAIF.
|
||||
*
|
||||
*/
|
||||
enum caif_socket_opts {
|
||||
CAIFSO_LINK_SELECT = 127,
|
||||
CAIFSO_REQ_PARAM = 128,
|
||||
CAIFSO_RSP_PARAM = 129,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_CAIF_SOCKET_H */
|
||||
@ -0,0 +1,35 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) ST-Ericsson AB 2010
|
||||
* Author: Sjur Brendeland
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
*/
|
||||
|
||||
#ifndef IF_CAIF_H_
|
||||
#define IF_CAIF_H_
|
||||
#include <linux/sockios.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
/**
|
||||
* enum ifla_caif - CAIF NetlinkRT parameters.
|
||||
* @IFLA_CAIF_IPV4_CONNID: Connection ID for IPv4 PDP Context.
|
||||
* The type of attribute is NLA_U32.
|
||||
* @IFLA_CAIF_IPV6_CONNID: Connection ID for IPv6 PDP Context.
|
||||
* The type of attribute is NLA_U32.
|
||||
* @IFLA_CAIF_LOOPBACK: If different from zero, device is doing loopback
|
||||
* The type of attribute is NLA_U8.
|
||||
*
|
||||
* When using RT Netlink to create, destroy or configure a CAIF IP interface,
|
||||
* enum ifla_caif is used to specify the configuration attributes.
|
||||
*/
|
||||
enum ifla_caif {
|
||||
__IFLA_CAIF_UNSPEC,
|
||||
IFLA_CAIF_IPV4_CONNID,
|
||||
IFLA_CAIF_IPV6_CONNID,
|
||||
IFLA_CAIF_LOOPBACK,
|
||||
__IFLA_CAIF_MAX
|
||||
};
|
||||
#define IFLA_CAIF_MAX (__IFLA_CAIF_MAX-1)
|
||||
|
||||
#endif /*IF_CAIF_H_*/
|
||||
220
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can.h
Normal file
220
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can.h
Normal file
@ -0,0 +1,220 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/*
|
||||
* linux/can.h
|
||||
*
|
||||
* Definitions for CAN network layer (socket addr / CAN frame / CAN filter)
|
||||
*
|
||||
* Authors: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
|
||||
* Urs Thuermann <urs.thuermann@volkswagen.de>
|
||||
* Copyright (c) 2002-2007 Volkswagen Group Electronic Research
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of Volkswagen nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* Alternatively, provided that this notice is retained in full, this
|
||||
* software may be distributed under the terms of the GNU General
|
||||
* Public License ("GPL") version 2, in which case the provisions of the
|
||||
* GPL apply INSTEAD OF those given above.
|
||||
*
|
||||
* The provided data structures and external interfaces from this code
|
||||
* are not restricted to be used by modules with a GPL compatible license.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _CAN_H
|
||||
#define _CAN_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
/* controller area network (CAN) kernel definitions */
|
||||
|
||||
/* special address description flags for the CAN_ID */
|
||||
#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */
|
||||
#define CAN_RTR_FLAG 0x40000000U /* remote transmission request */
|
||||
#define CAN_ERR_FLAG 0x20000000U /* error message frame */
|
||||
|
||||
/* valid bits in CAN ID for frame formats */
|
||||
#define CAN_SFF_MASK 0x000007FFU /* standard frame format (SFF) */
|
||||
#define CAN_EFF_MASK 0x1FFFFFFFU /* extended frame format (EFF) */
|
||||
#define CAN_ERR_MASK 0x1FFFFFFFU /* omit EFF, RTR, ERR flags */
|
||||
|
||||
/*
|
||||
* Controller Area Network Identifier structure
|
||||
*
|
||||
* bit 0-28 : CAN identifier (11/29 bit)
|
||||
* bit 29 : error message frame flag (0 = data frame, 1 = error message)
|
||||
* bit 30 : remote transmission request flag (1 = rtr frame)
|
||||
* bit 31 : frame format flag (0 = standard 11 bit, 1 = extended 29 bit)
|
||||
*/
|
||||
typedef __u32 canid_t;
|
||||
|
||||
#define CAN_SFF_ID_BITS 11
|
||||
#define CAN_EFF_ID_BITS 29
|
||||
|
||||
/*
|
||||
* Controller Area Network Error Message Frame Mask structure
|
||||
*
|
||||
* bit 0-28 : error class mask (see include/uapi/linux/can/error.h)
|
||||
* bit 29-31 : set to zero
|
||||
*/
|
||||
typedef __u32 can_err_mask_t;
|
||||
|
||||
/* CAN payload length and DLC definitions according to ISO 11898-1 */
|
||||
#define CAN_MAX_DLC 8
|
||||
#define CAN_MAX_DLEN 8
|
||||
|
||||
/* CAN FD payload length and DLC definitions according to ISO 11898-7 */
|
||||
#define CANFD_MAX_DLC 15
|
||||
#define CANFD_MAX_DLEN 64
|
||||
|
||||
/**
|
||||
* struct can_frame - basic CAN frame structure
|
||||
* @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition
|
||||
* @can_dlc: frame payload length in byte (0 .. 8) aka data length code
|
||||
* N.B. the DLC field from ISO 11898-1 Chapter 8.4.2.3 has a 1:1
|
||||
* mapping of the 'data length code' to the real payload length
|
||||
* @__pad: padding
|
||||
* @__res0: reserved / padding
|
||||
* @__res1: reserved / padding
|
||||
* @data: CAN frame payload (up to 8 byte)
|
||||
*/
|
||||
struct can_frame {
|
||||
canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
|
||||
__u8 can_dlc; /* frame payload length in byte (0 .. CAN_MAX_DLEN) */
|
||||
__u8 __pad; /* padding */
|
||||
__u8 __res0; /* reserved / padding */
|
||||
__u8 __res1; /* reserved / padding */
|
||||
__u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
/*
|
||||
* defined bits for canfd_frame.flags
|
||||
*
|
||||
* The use of struct canfd_frame implies the Extended Data Length (EDL) bit to
|
||||
* be set in the CAN frame bitstream on the wire. The EDL bit switch turns
|
||||
* the CAN controllers bitstream processor into the CAN FD mode which creates
|
||||
* two new options within the CAN FD frame specification:
|
||||
*
|
||||
* Bit Rate Switch - to indicate a second bitrate is/was used for the payload
|
||||
* Error State Indicator - represents the error state of the transmitting node
|
||||
*
|
||||
* As the CANFD_ESI bit is internally generated by the transmitting CAN
|
||||
* controller only the CANFD_BRS bit is relevant for real CAN controllers when
|
||||
* building a CAN FD frame for transmission. Setting the CANFD_ESI bit can make
|
||||
* sense for virtual CAN interfaces to test applications with echoed frames.
|
||||
*/
|
||||
#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */
|
||||
#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */
|
||||
|
||||
/**
|
||||
* struct canfd_frame - CAN flexible data rate frame structure
|
||||
* @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition
|
||||
* @len: frame payload length in byte (0 .. CANFD_MAX_DLEN)
|
||||
* @flags: additional flags for CAN FD
|
||||
* @__res0: reserved / padding
|
||||
* @__res1: reserved / padding
|
||||
* @data: CAN FD frame payload (up to CANFD_MAX_DLEN byte)
|
||||
*/
|
||||
struct canfd_frame {
|
||||
canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
|
||||
__u8 len; /* frame payload length in byte */
|
||||
__u8 flags; /* additional flags for CAN FD */
|
||||
__u8 __res0; /* reserved / padding */
|
||||
__u8 __res1; /* reserved / padding */
|
||||
__u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
#define CAN_MTU (sizeof(struct can_frame))
|
||||
#define CANFD_MTU (sizeof(struct canfd_frame))
|
||||
|
||||
/* particular protocols of the protocol family PF_CAN */
|
||||
#define CAN_RAW 1 /* RAW sockets */
|
||||
#define CAN_BCM 2 /* Broadcast Manager */
|
||||
#define CAN_TP16 3 /* VAG Transport Protocol v1.6 */
|
||||
#define CAN_TP20 4 /* VAG Transport Protocol v2.0 */
|
||||
#define CAN_MCNET 5 /* Bosch MCNet */
|
||||
#define CAN_ISOTP 6 /* ISO 15765-2 Transport Protocol */
|
||||
#define CAN_J1939 7 /* SAE J1939 */
|
||||
#define CAN_NPROTO 8
|
||||
|
||||
#define SOL_CAN_BASE 100
|
||||
|
||||
/**
|
||||
* struct sockaddr_can - the sockaddr structure for CAN sockets
|
||||
* @can_family: address family number AF_CAN.
|
||||
* @can_ifindex: CAN network interface index.
|
||||
* @can_addr: protocol specific address information
|
||||
*/
|
||||
struct sockaddr_can {
|
||||
__kernel_sa_family_t can_family;
|
||||
int can_ifindex;
|
||||
union {
|
||||
/* transport protocol class address information (e.g. ISOTP) */
|
||||
struct { canid_t rx_id, tx_id; } tp;
|
||||
|
||||
/* J1939 address information */
|
||||
struct {
|
||||
/* 8 byte name when using dynamic addressing */
|
||||
__u64 name;
|
||||
|
||||
/* pgn:
|
||||
* 8 bit: PS in PDU2 case, else 0
|
||||
* 8 bit: PF
|
||||
* 1 bit: DP
|
||||
* 1 bit: reserved
|
||||
*/
|
||||
__u32 pgn;
|
||||
|
||||
/* 1 byte address */
|
||||
__u8 addr;
|
||||
} j1939;
|
||||
|
||||
/* reserved for future CAN protocols address information */
|
||||
} can_addr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct can_filter - CAN ID based filter in can_register().
|
||||
* @can_id: relevant bits of CAN ID which are not masked out.
|
||||
* @can_mask: CAN mask (see description)
|
||||
*
|
||||
* Description:
|
||||
* A filter matches, when
|
||||
*
|
||||
* <received_can_id> & mask == can_id & mask
|
||||
*
|
||||
* The filter can be inverted (CAN_INV_FILTER bit set in can_id) or it can
|
||||
* filter for error message frames (CAN_ERR_FLAG bit set in mask).
|
||||
*/
|
||||
struct can_filter {
|
||||
canid_t can_id;
|
||||
canid_t can_mask;
|
||||
};
|
||||
|
||||
#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */
|
||||
#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */
|
||||
|
||||
#endif /* !_UAPI_CAN_H */
|
||||
105
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/bcm.h
Normal file
105
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/bcm.h
Normal file
@ -0,0 +1,105 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/*
|
||||
* linux/can/bcm.h
|
||||
*
|
||||
* Definitions for CAN Broadcast Manager (BCM)
|
||||
*
|
||||
* Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
|
||||
* Copyright (c) 2002-2007 Volkswagen Group Electronic Research
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of Volkswagen nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* Alternatively, provided that this notice is retained in full, this
|
||||
* software may be distributed under the terms of the GNU General
|
||||
* Public License ("GPL") version 2, in which case the provisions of the
|
||||
* GPL apply INSTEAD OF those given above.
|
||||
*
|
||||
* The provided data structures and external interfaces from this code
|
||||
* are not restricted to be used by modules with a GPL compatible license.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _CAN_BCM_H
|
||||
#define _CAN_BCM_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/can.h>
|
||||
|
||||
struct bcm_timeval {
|
||||
long tv_sec;
|
||||
long tv_usec;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct bcm_msg_head - head of messages to/from the broadcast manager
|
||||
* @opcode: opcode, see enum below.
|
||||
* @flags: special flags, see below.
|
||||
* @count: number of frames to send before changing interval.
|
||||
* @ival1: interval for the first @count frames.
|
||||
* @ival2: interval for the following frames.
|
||||
* @can_id: CAN ID of frames to be sent or received.
|
||||
* @nframes: number of frames appended to the message head.
|
||||
* @frames: array of CAN frames.
|
||||
*/
|
||||
struct bcm_msg_head {
|
||||
__u32 opcode;
|
||||
__u32 flags;
|
||||
__u32 count;
|
||||
struct bcm_timeval ival1, ival2;
|
||||
canid_t can_id;
|
||||
__u32 nframes;
|
||||
struct can_frame frames[0];
|
||||
};
|
||||
|
||||
enum {
|
||||
TX_SETUP = 1, /* create (cyclic) transmission task */
|
||||
TX_DELETE, /* remove (cyclic) transmission task */
|
||||
TX_READ, /* read properties of (cyclic) transmission task */
|
||||
TX_SEND, /* send one CAN frame */
|
||||
RX_SETUP, /* create RX content filter subscription */
|
||||
RX_DELETE, /* remove RX content filter subscription */
|
||||
RX_READ, /* read properties of RX content filter subscription */
|
||||
TX_STATUS, /* reply to TX_READ request */
|
||||
TX_EXPIRED, /* notification on performed transmissions (count=0) */
|
||||
RX_STATUS, /* reply to RX_READ request */
|
||||
RX_TIMEOUT, /* cyclic message is absent */
|
||||
RX_CHANGED /* updated CAN frame (detected content change) */
|
||||
};
|
||||
|
||||
#define SETTIMER 0x0001
|
||||
#define STARTTIMER 0x0002
|
||||
#define TX_COUNTEVT 0x0004
|
||||
#define TX_ANNOUNCE 0x0008
|
||||
#define TX_CP_CAN_ID 0x0010
|
||||
#define RX_FILTER_ID 0x0020
|
||||
#define RX_CHECK_DLC 0x0040
|
||||
#define RX_NO_AUTOTIMER 0x0080
|
||||
#define RX_ANNOUNCE_RESUME 0x0100
|
||||
#define TX_RESET_MULTI_IDX 0x0200
|
||||
#define RX_RTR_FRAME 0x0400
|
||||
#define CAN_FD_FRAME 0x0800
|
||||
|
||||
#endif /* !_UAPI_CAN_BCM_H */
|
||||
125
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/error.h
Normal file
125
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/error.h
Normal file
@ -0,0 +1,125 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/*
|
||||
* linux/can/error.h
|
||||
*
|
||||
* Definitions of the CAN error messages to be filtered and passed to the user.
|
||||
*
|
||||
* Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
|
||||
* Copyright (c) 2002-2007 Volkswagen Group Electronic Research
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of Volkswagen nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* Alternatively, provided that this notice is retained in full, this
|
||||
* software may be distributed under the terms of the GNU General
|
||||
* Public License ("GPL") version 2, in which case the provisions of the
|
||||
* GPL apply INSTEAD OF those given above.
|
||||
*
|
||||
* The provided data structures and external interfaces from this code
|
||||
* are not restricted to be used by modules with a GPL compatible license.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _CAN_ERROR_H
|
||||
#define _CAN_ERROR_H
|
||||
|
||||
#define CAN_ERR_DLC 8 /* dlc for error message frames */
|
||||
|
||||
/* error class (mask) in can_id */
|
||||
#define CAN_ERR_TX_TIMEOUT 0x00000001U /* TX timeout (by netdevice driver) */
|
||||
#define CAN_ERR_LOSTARB 0x00000002U /* lost arbitration / data[0] */
|
||||
#define CAN_ERR_CRTL 0x00000004U /* controller problems / data[1] */
|
||||
#define CAN_ERR_PROT 0x00000008U /* protocol violations / data[2..3] */
|
||||
#define CAN_ERR_TRX 0x00000010U /* transceiver status / data[4] */
|
||||
#define CAN_ERR_ACK 0x00000020U /* received no ACK on transmission */
|
||||
#define CAN_ERR_BUSOFF 0x00000040U /* bus off */
|
||||
#define CAN_ERR_BUSERROR 0x00000080U /* bus error (may flood!) */
|
||||
#define CAN_ERR_RESTARTED 0x00000100U /* controller restarted */
|
||||
|
||||
/* arbitration lost in bit ... / data[0] */
|
||||
#define CAN_ERR_LOSTARB_UNSPEC 0x00 /* unspecified */
|
||||
/* else bit number in bitstream */
|
||||
|
||||
/* error status of CAN-controller / data[1] */
|
||||
#define CAN_ERR_CRTL_UNSPEC 0x00 /* unspecified */
|
||||
#define CAN_ERR_CRTL_RX_OVERFLOW 0x01 /* RX buffer overflow */
|
||||
#define CAN_ERR_CRTL_TX_OVERFLOW 0x02 /* TX buffer overflow */
|
||||
#define CAN_ERR_CRTL_RX_WARNING 0x04 /* reached warning level for RX errors */
|
||||
#define CAN_ERR_CRTL_TX_WARNING 0x08 /* reached warning level for TX errors */
|
||||
#define CAN_ERR_CRTL_RX_PASSIVE 0x10 /* reached error passive status RX */
|
||||
#define CAN_ERR_CRTL_TX_PASSIVE 0x20 /* reached error passive status TX */
|
||||
/* (at least one error counter exceeds */
|
||||
/* the protocol-defined level of 127) */
|
||||
#define CAN_ERR_CRTL_ACTIVE 0x40 /* recovered to error active state */
|
||||
|
||||
/* error in CAN protocol (type) / data[2] */
|
||||
#define CAN_ERR_PROT_UNSPEC 0x00 /* unspecified */
|
||||
#define CAN_ERR_PROT_BIT 0x01 /* single bit error */
|
||||
#define CAN_ERR_PROT_FORM 0x02 /* frame format error */
|
||||
#define CAN_ERR_PROT_STUFF 0x04 /* bit stuffing error */
|
||||
#define CAN_ERR_PROT_BIT0 0x08 /* unable to send dominant bit */
|
||||
#define CAN_ERR_PROT_BIT1 0x10 /* unable to send recessive bit */
|
||||
#define CAN_ERR_PROT_OVERLOAD 0x20 /* bus overload */
|
||||
#define CAN_ERR_PROT_ACTIVE 0x40 /* active error announcement */
|
||||
#define CAN_ERR_PROT_TX 0x80 /* error occurred on transmission */
|
||||
|
||||
/* error in CAN protocol (location) / data[3] */
|
||||
#define CAN_ERR_PROT_LOC_UNSPEC 0x00 /* unspecified */
|
||||
#define CAN_ERR_PROT_LOC_SOF 0x03 /* start of frame */
|
||||
#define CAN_ERR_PROT_LOC_ID28_21 0x02 /* ID bits 28 - 21 (SFF: 10 - 3) */
|
||||
#define CAN_ERR_PROT_LOC_ID20_18 0x06 /* ID bits 20 - 18 (SFF: 2 - 0 )*/
|
||||
#define CAN_ERR_PROT_LOC_SRTR 0x04 /* substitute RTR (SFF: RTR) */
|
||||
#define CAN_ERR_PROT_LOC_IDE 0x05 /* identifier extension */
|
||||
#define CAN_ERR_PROT_LOC_ID17_13 0x07 /* ID bits 17-13 */
|
||||
#define CAN_ERR_PROT_LOC_ID12_05 0x0F /* ID bits 12-5 */
|
||||
#define CAN_ERR_PROT_LOC_ID04_00 0x0E /* ID bits 4-0 */
|
||||
#define CAN_ERR_PROT_LOC_RTR 0x0C /* RTR */
|
||||
#define CAN_ERR_PROT_LOC_RES1 0x0D /* reserved bit 1 */
|
||||
#define CAN_ERR_PROT_LOC_RES0 0x09 /* reserved bit 0 */
|
||||
#define CAN_ERR_PROT_LOC_DLC 0x0B /* data length code */
|
||||
#define CAN_ERR_PROT_LOC_DATA 0x0A /* data section */
|
||||
#define CAN_ERR_PROT_LOC_CRC_SEQ 0x08 /* CRC sequence */
|
||||
#define CAN_ERR_PROT_LOC_CRC_DEL 0x18 /* CRC delimiter */
|
||||
#define CAN_ERR_PROT_LOC_ACK 0x19 /* ACK slot */
|
||||
#define CAN_ERR_PROT_LOC_ACK_DEL 0x1B /* ACK delimiter */
|
||||
#define CAN_ERR_PROT_LOC_EOF 0x1A /* end of frame */
|
||||
#define CAN_ERR_PROT_LOC_INTERM 0x12 /* intermission */
|
||||
|
||||
/* error status of CAN-transceiver / data[4] */
|
||||
/* CANH CANL */
|
||||
#define CAN_ERR_TRX_UNSPEC 0x00 /* 0000 0000 */
|
||||
#define CAN_ERR_TRX_CANH_NO_WIRE 0x04 /* 0000 0100 */
|
||||
#define CAN_ERR_TRX_CANH_SHORT_TO_BAT 0x05 /* 0000 0101 */
|
||||
#define CAN_ERR_TRX_CANH_SHORT_TO_VCC 0x06 /* 0000 0110 */
|
||||
#define CAN_ERR_TRX_CANH_SHORT_TO_GND 0x07 /* 0000 0111 */
|
||||
#define CAN_ERR_TRX_CANL_NO_WIRE 0x40 /* 0100 0000 */
|
||||
#define CAN_ERR_TRX_CANL_SHORT_TO_BAT 0x50 /* 0101 0000 */
|
||||
#define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60 /* 0110 0000 */
|
||||
#define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70 /* 0111 0000 */
|
||||
#define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80 /* 1000 0000 */
|
||||
|
||||
/* controller specific additional information / data[5..7] */
|
||||
|
||||
#endif /* _CAN_ERROR_H */
|
||||
222
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/gw.h
Normal file
222
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/gw.h
Normal file
@ -0,0 +1,222 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/*
|
||||
* linux/can/gw.h
|
||||
*
|
||||
* Definitions for CAN frame Gateway/Router/Bridge
|
||||
*
|
||||
* Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
|
||||
* Copyright (c) 2011 Volkswagen Group Electronic Research
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of Volkswagen nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* Alternatively, provided that this notice is retained in full, this
|
||||
* software may be distributed under the terms of the GNU General
|
||||
* Public License ("GPL") version 2, in which case the provisions of the
|
||||
* GPL apply INSTEAD OF those given above.
|
||||
*
|
||||
* The provided data structures and external interfaces from this code
|
||||
* are not restricted to be used by modules with a GPL compatible license.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _CAN_GW_H
|
||||
#define _CAN_GW_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/can.h>
|
||||
|
||||
struct rtcanmsg {
|
||||
__u8 can_family;
|
||||
__u8 gwtype;
|
||||
__u16 flags;
|
||||
};
|
||||
|
||||
/* CAN gateway types */
|
||||
enum {
|
||||
CGW_TYPE_UNSPEC,
|
||||
CGW_TYPE_CAN_CAN, /* CAN->CAN routing */
|
||||
__CGW_TYPE_MAX
|
||||
};
|
||||
|
||||
#define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
|
||||
|
||||
/* CAN rtnetlink attribute definitions */
|
||||
enum {
|
||||
CGW_UNSPEC,
|
||||
CGW_MOD_AND, /* CAN frame modification binary AND */
|
||||
CGW_MOD_OR, /* CAN frame modification binary OR */
|
||||
CGW_MOD_XOR, /* CAN frame modification binary XOR */
|
||||
CGW_MOD_SET, /* CAN frame modification set alternate values */
|
||||
CGW_CS_XOR, /* set data[] XOR checksum into data[index] */
|
||||
CGW_CS_CRC8, /* set data[] CRC8 checksum into data[index] */
|
||||
CGW_HANDLED, /* number of handled CAN frames */
|
||||
CGW_DROPPED, /* number of dropped CAN frames */
|
||||
CGW_SRC_IF, /* ifindex of source network interface */
|
||||
CGW_DST_IF, /* ifindex of destination network interface */
|
||||
CGW_FILTER, /* specify struct can_filter on source CAN device */
|
||||
CGW_DELETED, /* number of deleted CAN frames (see max_hops param) */
|
||||
CGW_LIM_HOPS, /* limit the number of hops of this specific rule */
|
||||
CGW_MOD_UID, /* user defined identifier for modification updates */
|
||||
CGW_FDMOD_AND, /* CAN FD frame modification binary AND */
|
||||
CGW_FDMOD_OR, /* CAN FD frame modification binary OR */
|
||||
CGW_FDMOD_XOR, /* CAN FD frame modification binary XOR */
|
||||
CGW_FDMOD_SET, /* CAN FD frame modification set alternate values */
|
||||
__CGW_MAX
|
||||
};
|
||||
|
||||
#define CGW_MAX (__CGW_MAX - 1)
|
||||
|
||||
#define CGW_FLAGS_CAN_ECHO 0x01
|
||||
#define CGW_FLAGS_CAN_SRC_TSTAMP 0x02
|
||||
#define CGW_FLAGS_CAN_IIF_TX_OK 0x04
|
||||
#define CGW_FLAGS_CAN_FD 0x08
|
||||
|
||||
#define CGW_MOD_FUNCS 4 /* AND OR XOR SET */
|
||||
|
||||
/* CAN frame elements that are affected by curr. 3 CAN frame modifications */
|
||||
#define CGW_MOD_ID 0x01
|
||||
#define CGW_MOD_DLC 0x02 /* contains the data length in bytes */
|
||||
#define CGW_MOD_LEN CGW_MOD_DLC /* CAN FD length representation */
|
||||
#define CGW_MOD_DATA 0x04
|
||||
#define CGW_MOD_FLAGS 0x08 /* CAN FD flags */
|
||||
|
||||
#define CGW_FRAME_MODS 4 /* ID DLC/LEN DATA FLAGS */
|
||||
|
||||
#define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS)
|
||||
|
||||
struct cgw_frame_mod {
|
||||
struct can_frame cf;
|
||||
__u8 modtype;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct cgw_fdframe_mod {
|
||||
struct canfd_frame cf;
|
||||
__u8 modtype;
|
||||
} __attribute__((packed));
|
||||
|
||||
#define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod)
|
||||
#define CGW_FDMODATTR_LEN sizeof(struct cgw_fdframe_mod)
|
||||
|
||||
struct cgw_csum_xor {
|
||||
__s8 from_idx;
|
||||
__s8 to_idx;
|
||||
__s8 result_idx;
|
||||
__u8 init_xor_val;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct cgw_csum_crc8 {
|
||||
__s8 from_idx;
|
||||
__s8 to_idx;
|
||||
__s8 result_idx;
|
||||
__u8 init_crc_val;
|
||||
__u8 final_xor_val;
|
||||
__u8 crctab[256];
|
||||
__u8 profile;
|
||||
__u8 profile_data[20];
|
||||
} __attribute__((packed));
|
||||
|
||||
/* length of checksum operation parameters. idx = index in CAN frame data[] */
|
||||
#define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor)
|
||||
#define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8)
|
||||
|
||||
/* CRC8 profiles (compute CRC for additional data elements - see below) */
|
||||
enum {
|
||||
CGW_CRC8PRF_UNSPEC,
|
||||
CGW_CRC8PRF_1U8, /* compute one additional u8 value */
|
||||
CGW_CRC8PRF_16U8, /* u8 value table indexed by data[1] & 0xF */
|
||||
CGW_CRC8PRF_SFFID_XOR, /* (can_id & 0xFF) ^ (can_id >> 8 & 0xFF) */
|
||||
__CGW_CRC8PRF_MAX
|
||||
};
|
||||
|
||||
#define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1)
|
||||
|
||||
/*
|
||||
* CAN rtnetlink attribute contents in detail
|
||||
*
|
||||
* CGW_XXX_IF (length 4 bytes):
|
||||
* Sets an interface index for source/destination network interfaces.
|
||||
* For the CAN->CAN gwtype the indices of _two_ CAN interfaces are mandatory.
|
||||
*
|
||||
* CGW_FILTER (length 8 bytes):
|
||||
* Sets a CAN receive filter for the gateway job specified by the
|
||||
* struct can_filter described in include/linux/can.h
|
||||
*
|
||||
* CGW_MOD_(AND|OR|XOR|SET) (length 17 bytes):
|
||||
* Specifies a modification that's done to a received CAN frame before it is
|
||||
* send out to the destination interface.
|
||||
*
|
||||
* <struct can_frame> data used as operator
|
||||
* <u8> affected CAN frame elements
|
||||
*
|
||||
* CGW_LIM_HOPS (length 1 byte):
|
||||
* Limit the number of hops of this specific rule. Usually the received CAN
|
||||
* frame can be processed as much as 'max_hops' times (which is given at module
|
||||
* load time of the can-gw module). This value is used to reduce the number of
|
||||
* possible hops for this gateway rule to a value smaller then max_hops.
|
||||
*
|
||||
* CGW_MOD_UID (length 4 bytes):
|
||||
* Optional non-zero user defined routing job identifier to alter existing
|
||||
* modification settings at runtime.
|
||||
*
|
||||
* CGW_CS_XOR (length 4 bytes):
|
||||
* Set a simple XOR checksum starting with an initial value into
|
||||
* data[result-idx] using data[start-idx] .. data[end-idx]
|
||||
*
|
||||
* The XOR checksum is calculated like this:
|
||||
*
|
||||
* xor = init_xor_val
|
||||
*
|
||||
* for (i = from_idx .. to_idx)
|
||||
* xor ^= can_frame.data[i]
|
||||
*
|
||||
* can_frame.data[ result_idx ] = xor
|
||||
*
|
||||
* CGW_CS_CRC8 (length 282 bytes):
|
||||
* Set a CRC8 value into data[result-idx] using a given 256 byte CRC8 table,
|
||||
* a given initial value and a defined input data[start-idx] .. data[end-idx].
|
||||
* Finally the result value is XOR'ed with the final_xor_val.
|
||||
*
|
||||
* The CRC8 checksum is calculated like this:
|
||||
*
|
||||
* crc = init_crc_val
|
||||
*
|
||||
* for (i = from_idx .. to_idx)
|
||||
* crc = crctab[ crc ^ can_frame.data[i] ]
|
||||
*
|
||||
* can_frame.data[ result_idx ] = crc ^ final_xor_val
|
||||
*
|
||||
* The calculated CRC may contain additional source data elements that can be
|
||||
* defined in the handling of 'checksum profiles' e.g. shown in AUTOSAR specs
|
||||
* like http://www.autosar.org/download/R4.0/AUTOSAR_SWS_E2ELibrary.pdf
|
||||
* E.g. the profile_data[] may contain additional u8 values (called DATA_IDs)
|
||||
* that are used depending on counter values inside the CAN frame data[].
|
||||
* So far only three profiles have been implemented for illustration.
|
||||
*
|
||||
* Remark: In general the attribute data is a linear buffer.
|
||||
* Beware of sending unpacked or aligned structs!
|
||||
*/
|
||||
|
||||
#endif /* !_UAPI_CAN_GW_H */
|
||||
@ -0,0 +1,99 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
/*
|
||||
* j1939.h
|
||||
*
|
||||
* Copyright (c) 2010-2011 EIA Electronics
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef _CAN_J1939_H_
|
||||
#define _CAN_J1939_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/socket.h>
|
||||
#include <linux/can.h>
|
||||
|
||||
#define J1939_MAX_UNICAST_ADDR 0xfd
|
||||
#define J1939_IDLE_ADDR 0xfe
|
||||
#define J1939_NO_ADDR 0xff /* == broadcast or no addr */
|
||||
#define J1939_NO_NAME 0
|
||||
#define J1939_PGN_REQUEST 0x0ea00 /* Request PG */
|
||||
#define J1939_PGN_ADDRESS_CLAIMED 0x0ee00 /* Address Claimed */
|
||||
#define J1939_PGN_ADDRESS_COMMANDED 0x0fed8 /* Commanded Address */
|
||||
#define J1939_PGN_PDU1_MAX 0x3ff00
|
||||
#define J1939_PGN_MAX 0x3ffff
|
||||
#define J1939_NO_PGN 0x40000
|
||||
|
||||
/* J1939 Parameter Group Number
|
||||
*
|
||||
* bit 0-7 : PDU Specific (PS)
|
||||
* bit 8-15 : PDU Format (PF)
|
||||
* bit 16 : Data Page (DP)
|
||||
* bit 17 : Reserved (R)
|
||||
* bit 19-31 : set to zero
|
||||
*/
|
||||
typedef __u32 pgn_t;
|
||||
|
||||
/* J1939 Priority
|
||||
*
|
||||
* bit 0-2 : Priority (P)
|
||||
* bit 3-7 : set to zero
|
||||
*/
|
||||
typedef __u8 priority_t;
|
||||
|
||||
/* J1939 NAME
|
||||
*
|
||||
* bit 0-20 : Identity Number
|
||||
* bit 21-31 : Manufacturer Code
|
||||
* bit 32-34 : ECU Instance
|
||||
* bit 35-39 : Function Instance
|
||||
* bit 40-47 : Function
|
||||
* bit 48 : Reserved
|
||||
* bit 49-55 : Vehicle System
|
||||
* bit 56-59 : Vehicle System Instance
|
||||
* bit 60-62 : Industry Group
|
||||
* bit 63 : Arbitrary Address Capable
|
||||
*/
|
||||
typedef __u64 name_t;
|
||||
|
||||
/* J1939 socket options */
|
||||
#define SOL_CAN_J1939 (SOL_CAN_BASE + CAN_J1939)
|
||||
enum {
|
||||
SO_J1939_FILTER = 1, /* set filters */
|
||||
SO_J1939_PROMISC = 2, /* set/clr promiscuous mode */
|
||||
SO_J1939_SEND_PRIO = 3,
|
||||
SO_J1939_ERRQUEUE = 4,
|
||||
};
|
||||
|
||||
enum {
|
||||
SCM_J1939_DEST_ADDR = 1,
|
||||
SCM_J1939_DEST_NAME = 2,
|
||||
SCM_J1939_PRIO = 3,
|
||||
SCM_J1939_ERRQUEUE = 4,
|
||||
};
|
||||
|
||||
enum {
|
||||
J1939_NLA_PAD,
|
||||
J1939_NLA_BYTES_ACKED,
|
||||
};
|
||||
|
||||
enum {
|
||||
J1939_EE_INFO_NONE,
|
||||
J1939_EE_INFO_TX_ABORT,
|
||||
};
|
||||
|
||||
struct j1939_filter {
|
||||
name_t name;
|
||||
name_t name_mask;
|
||||
pgn_t pgn;
|
||||
pgn_t pgn_mask;
|
||||
__u8 addr;
|
||||
__u8 addr_mask;
|
||||
};
|
||||
|
||||
#define J1939_FILTER_MAX 512 /* maximum number of j1939_filter set via setsockopt() */
|
||||
|
||||
#endif /* !_UAPI_CAN_J1939_H_ */
|
||||
144
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/netlink.h
Normal file
144
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/netlink.h
Normal file
@ -0,0 +1,144 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
/*
|
||||
* linux/can/netlink.h
|
||||
*
|
||||
* Definitions for the CAN netlink interface
|
||||
*
|
||||
* Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the version 2 of the GNU General Public License
|
||||
* as published by the Free Software Foundation
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef _CAN_NETLINK_H
|
||||
#define _CAN_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* CAN bit-timing parameters
|
||||
*
|
||||
* For further information, please read chapter "8 BIT TIMING
|
||||
* REQUIREMENTS" of the "Bosch CAN Specification version 2.0"
|
||||
* at http://www.semiconductors.bosch.de/pdf/can2spec.pdf.
|
||||
*/
|
||||
struct can_bittiming {
|
||||
__u32 bitrate; /* Bit-rate in bits/second */
|
||||
__u32 sample_point; /* Sample point in one-tenth of a percent */
|
||||
__u32 tq; /* Time quanta (TQ) in nanoseconds */
|
||||
__u32 prop_seg; /* Propagation segment in TQs */
|
||||
__u32 phase_seg1; /* Phase buffer segment 1 in TQs */
|
||||
__u32 phase_seg2; /* Phase buffer segment 2 in TQs */
|
||||
__u32 sjw; /* Synchronisation jump width in TQs */
|
||||
__u32 brp; /* Bit-rate prescaler */
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN hardware-dependent bit-timing constant
|
||||
*
|
||||
* Used for calculating and checking bit-timing parameters
|
||||
*/
|
||||
struct can_bittiming_const {
|
||||
char name[16]; /* Name of the CAN controller hardware */
|
||||
__u32 tseg1_min; /* Time segment 1 = prop_seg + phase_seg1 */
|
||||
__u32 tseg1_max;
|
||||
__u32 tseg2_min; /* Time segment 2 = phase_seg2 */
|
||||
__u32 tseg2_max;
|
||||
__u32 sjw_max; /* Synchronisation jump width */
|
||||
__u32 brp_min; /* Bit-rate prescaler */
|
||||
__u32 brp_max;
|
||||
__u32 brp_inc;
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN clock parameters
|
||||
*/
|
||||
struct can_clock {
|
||||
__u32 freq; /* CAN system clock frequency in Hz */
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN operational and error states
|
||||
*/
|
||||
enum can_state {
|
||||
CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */
|
||||
CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */
|
||||
CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */
|
||||
CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */
|
||||
CAN_STATE_STOPPED, /* Device is stopped */
|
||||
CAN_STATE_SLEEPING, /* Device is sleeping */
|
||||
CAN_STATE_MAX
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN bus error counters
|
||||
*/
|
||||
struct can_berr_counter {
|
||||
__u16 txerr;
|
||||
__u16 rxerr;
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN controller mode
|
||||
*/
|
||||
struct can_ctrlmode {
|
||||
__u32 mask;
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
#define CAN_CTRLMODE_LOOPBACK 0x01 /* Loopback mode */
|
||||
#define CAN_CTRLMODE_LISTENONLY 0x02 /* Listen-only mode */
|
||||
#define CAN_CTRLMODE_3_SAMPLES 0x04 /* Triple sampling mode */
|
||||
#define CAN_CTRLMODE_ONE_SHOT 0x08 /* One-Shot mode */
|
||||
#define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */
|
||||
#define CAN_CTRLMODE_FD 0x20 /* CAN FD mode */
|
||||
#define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */
|
||||
#define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */
|
||||
|
||||
/*
|
||||
* CAN device statistics
|
||||
*/
|
||||
struct can_device_stats {
|
||||
__u32 bus_error; /* Bus errors */
|
||||
__u32 error_warning; /* Changes to error warning state */
|
||||
__u32 error_passive; /* Changes to error passive state */
|
||||
__u32 bus_off; /* Changes to bus off state */
|
||||
__u32 arbitration_lost; /* Arbitration lost errors */
|
||||
__u32 restarts; /* CAN controller re-starts */
|
||||
};
|
||||
|
||||
/*
|
||||
* CAN netlink interface
|
||||
*/
|
||||
enum {
|
||||
IFLA_CAN_UNSPEC,
|
||||
IFLA_CAN_BITTIMING,
|
||||
IFLA_CAN_BITTIMING_CONST,
|
||||
IFLA_CAN_CLOCK,
|
||||
IFLA_CAN_STATE,
|
||||
IFLA_CAN_CTRLMODE,
|
||||
IFLA_CAN_RESTART_MS,
|
||||
IFLA_CAN_RESTART,
|
||||
IFLA_CAN_BERR_COUNTER,
|
||||
IFLA_CAN_DATA_BITTIMING,
|
||||
IFLA_CAN_DATA_BITTIMING_CONST,
|
||||
IFLA_CAN_TERMINATION,
|
||||
IFLA_CAN_TERMINATION_CONST,
|
||||
IFLA_CAN_BITRATE_CONST,
|
||||
IFLA_CAN_DATA_BITRATE_CONST,
|
||||
IFLA_CAN_BITRATE_MAX,
|
||||
__IFLA_CAN_MAX
|
||||
};
|
||||
|
||||
#define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
|
||||
|
||||
/* u16 termination range: 1..65535 Ohms */
|
||||
#define CAN_TERMINATION_DISABLED 0
|
||||
|
||||
#endif /* !_UAPI_CAN_NETLINK_H */
|
||||
64
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/raw.h
Normal file
64
ramdisk/initramfs/glibc_riscv64/usr/include/linux/can/raw.h
Normal file
@ -0,0 +1,64 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/*
|
||||
* linux/can/raw.h
|
||||
*
|
||||
* Definitions for raw CAN sockets
|
||||
*
|
||||
* Authors: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
|
||||
* Urs Thuermann <urs.thuermann@volkswagen.de>
|
||||
* Copyright (c) 2002-2007 Volkswagen Group Electronic Research
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of Volkswagen nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* Alternatively, provided that this notice is retained in full, this
|
||||
* software may be distributed under the terms of the GNU General
|
||||
* Public License ("GPL") version 2, in which case the provisions of the
|
||||
* GPL apply INSTEAD OF those given above.
|
||||
*
|
||||
* The provided data structures and external interfaces from this code
|
||||
* are not restricted to be used by modules with a GPL compatible license.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
* DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _CAN_RAW_H
|
||||
#define _CAN_RAW_H
|
||||
|
||||
#include <linux/can.h>
|
||||
|
||||
#define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW)
|
||||
|
||||
/* for socket options affecting the socket (not the global system) */
|
||||
|
||||
enum {
|
||||
CAN_RAW_FILTER = 1, /* set 0 .. n can_filter(s) */
|
||||
CAN_RAW_ERR_FILTER, /* set filter for error frames */
|
||||
CAN_RAW_LOOPBACK, /* local loopback (default:on) */
|
||||
CAN_RAW_RECV_OWN_MSGS, /* receive my own msgs (default:off) */
|
||||
CAN_RAW_FD_FRAMES, /* allow CAN FD frames (default:off) */
|
||||
CAN_RAW_JOIN_FILTERS, /* all filters must match to trigger */
|
||||
};
|
||||
|
||||
#endif /* !_UAPI_CAN_RAW_H */
|
||||
@ -0,0 +1,13 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
#ifndef _CAN_VXCAN_H
|
||||
#define _CAN_VXCAN_H
|
||||
|
||||
enum {
|
||||
VXCAN_INFO_UNSPEC,
|
||||
VXCAN_INFO_PEER,
|
||||
|
||||
__VXCAN_INFO_MAX
|
||||
#define VXCAN_INFO_MAX (__VXCAN_INFO_MAX - 1)
|
||||
};
|
||||
|
||||
#endif
|
||||
380
ramdisk/initramfs/glibc_riscv64/usr/include/linux/capability.h
Normal file
380
ramdisk/initramfs/glibc_riscv64/usr/include/linux/capability.h
Normal file
@ -0,0 +1,380 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* This is <linux/capability.h>
|
||||
*
|
||||
* Andrew G. Morgan <morgan@kernel.org>
|
||||
* Alexander Kjeldaas <astor@guardian.no>
|
||||
* with help from Aleph1, Roland Buresund and Andrew Main.
|
||||
*
|
||||
* See here for the libcap library ("POSIX draft" compliance):
|
||||
*
|
||||
* ftp://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CAPABILITY_H
|
||||
#define _LINUX_CAPABILITY_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* User-level do most of the mapping between kernel and user
|
||||
capabilities based on the version tag given by the kernel. The
|
||||
kernel might be somewhat backwards compatible, but don't bet on
|
||||
it. */
|
||||
|
||||
/* Note, cap_t, is defined by POSIX (draft) to be an "opaque" pointer to
|
||||
a set of three capability sets. The transposition of 3*the
|
||||
following structure to such a composite is better handled in a user
|
||||
library since the draft standard requires the use of malloc/free
|
||||
etc.. */
|
||||
|
||||
#define _LINUX_CAPABILITY_VERSION_1 0x19980330
|
||||
#define _LINUX_CAPABILITY_U32S_1 1
|
||||
|
||||
#define _LINUX_CAPABILITY_VERSION_2 0x20071026 /* deprecated - use v3 */
|
||||
#define _LINUX_CAPABILITY_U32S_2 2
|
||||
|
||||
#define _LINUX_CAPABILITY_VERSION_3 0x20080522
|
||||
#define _LINUX_CAPABILITY_U32S_3 2
|
||||
|
||||
typedef struct __user_cap_header_struct {
|
||||
__u32 version;
|
||||
int pid;
|
||||
} *cap_user_header_t;
|
||||
|
||||
typedef struct __user_cap_data_struct {
|
||||
__u32 effective;
|
||||
__u32 permitted;
|
||||
__u32 inheritable;
|
||||
} *cap_user_data_t;
|
||||
|
||||
|
||||
#define VFS_CAP_REVISION_MASK 0xFF000000
|
||||
#define VFS_CAP_REVISION_SHIFT 24
|
||||
#define VFS_CAP_FLAGS_MASK ~VFS_CAP_REVISION_MASK
|
||||
#define VFS_CAP_FLAGS_EFFECTIVE 0x000001
|
||||
|
||||
#define VFS_CAP_REVISION_1 0x01000000
|
||||
#define VFS_CAP_U32_1 1
|
||||
#define XATTR_CAPS_SZ_1 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_1))
|
||||
|
||||
#define VFS_CAP_REVISION_2 0x02000000
|
||||
#define VFS_CAP_U32_2 2
|
||||
#define XATTR_CAPS_SZ_2 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_2))
|
||||
|
||||
#define VFS_CAP_REVISION_3 0x03000000
|
||||
#define VFS_CAP_U32_3 2
|
||||
#define XATTR_CAPS_SZ_3 (sizeof(__le32)*(2 + 2*VFS_CAP_U32_3))
|
||||
|
||||
#define XATTR_CAPS_SZ XATTR_CAPS_SZ_3
|
||||
#define VFS_CAP_U32 VFS_CAP_U32_3
|
||||
#define VFS_CAP_REVISION VFS_CAP_REVISION_3
|
||||
|
||||
struct vfs_cap_data {
|
||||
__le32 magic_etc; /* Little endian */
|
||||
struct {
|
||||
__le32 permitted; /* Little endian */
|
||||
__le32 inheritable; /* Little endian */
|
||||
} data[VFS_CAP_U32];
|
||||
};
|
||||
|
||||
/*
|
||||
* same as vfs_cap_data but with a rootid at the end
|
||||
*/
|
||||
struct vfs_ns_cap_data {
|
||||
__le32 magic_etc;
|
||||
struct {
|
||||
__le32 permitted; /* Little endian */
|
||||
__le32 inheritable; /* Little endian */
|
||||
} data[VFS_CAP_U32];
|
||||
__le32 rootid;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Backwardly compatible definition for source code - trapped in a
|
||||
* 32-bit world. If you find you need this, please consider using
|
||||
* libcap to untrap yourself...
|
||||
*/
|
||||
#define _LINUX_CAPABILITY_VERSION _LINUX_CAPABILITY_VERSION_1
|
||||
#define _LINUX_CAPABILITY_U32S _LINUX_CAPABILITY_U32S_1
|
||||
|
||||
|
||||
|
||||
/**
|
||||
** POSIX-draft defined capabilities.
|
||||
**/
|
||||
|
||||
/* In a system with the [_POSIX_CHOWN_RESTRICTED] option defined, this
|
||||
overrides the restriction of changing file ownership and group
|
||||
ownership. */
|
||||
|
||||
#define CAP_CHOWN 0
|
||||
|
||||
/* Override all DAC access, including ACL execute access if
|
||||
[_POSIX_ACL] is defined. Excluding DAC access covered by
|
||||
CAP_LINUX_IMMUTABLE. */
|
||||
|
||||
#define CAP_DAC_OVERRIDE 1
|
||||
|
||||
/* Overrides all DAC restrictions regarding read and search on files
|
||||
and directories, including ACL restrictions if [_POSIX_ACL] is
|
||||
defined. Excluding DAC access covered by CAP_LINUX_IMMUTABLE. */
|
||||
|
||||
#define CAP_DAC_READ_SEARCH 2
|
||||
|
||||
/* Overrides all restrictions about allowed operations on files, where
|
||||
file owner ID must be equal to the user ID, except where CAP_FSETID
|
||||
is applicable. It doesn't override MAC and DAC restrictions. */
|
||||
|
||||
#define CAP_FOWNER 3
|
||||
|
||||
/* Overrides the following restrictions that the effective user ID
|
||||
shall match the file owner ID when setting the S_ISUID and S_ISGID
|
||||
bits on that file; that the effective group ID (or one of the
|
||||
supplementary group IDs) shall match the file owner ID when setting
|
||||
the S_ISGID bit on that file; that the S_ISUID and S_ISGID bits are
|
||||
cleared on successful return from chown(2) (not implemented). */
|
||||
|
||||
#define CAP_FSETID 4
|
||||
|
||||
/* Overrides the restriction that the real or effective user ID of a
|
||||
process sending a signal must match the real or effective user ID
|
||||
of the process receiving the signal. */
|
||||
|
||||
#define CAP_KILL 5
|
||||
|
||||
/* Allows setgid(2) manipulation */
|
||||
/* Allows setgroups(2) */
|
||||
/* Allows forged gids on socket credentials passing. */
|
||||
|
||||
#define CAP_SETGID 6
|
||||
|
||||
/* Allows set*uid(2) manipulation (including fsuid). */
|
||||
/* Allows forged pids on socket credentials passing. */
|
||||
|
||||
#define CAP_SETUID 7
|
||||
|
||||
|
||||
/**
|
||||
** Linux-specific capabilities
|
||||
**/
|
||||
|
||||
/* Without VFS support for capabilities:
|
||||
* Transfer any capability in your permitted set to any pid,
|
||||
* remove any capability in your permitted set from any pid
|
||||
* With VFS support for capabilities (neither of above, but)
|
||||
* Add any capability from current's capability bounding set
|
||||
* to the current process' inheritable set
|
||||
* Allow taking bits out of capability bounding set
|
||||
* Allow modification of the securebits for a process
|
||||
*/
|
||||
|
||||
#define CAP_SETPCAP 8
|
||||
|
||||
/* Allow modification of S_IMMUTABLE and S_APPEND file attributes */
|
||||
|
||||
#define CAP_LINUX_IMMUTABLE 9
|
||||
|
||||
/* Allows binding to TCP/UDP sockets below 1024 */
|
||||
/* Allows binding to ATM VCIs below 32 */
|
||||
|
||||
#define CAP_NET_BIND_SERVICE 10
|
||||
|
||||
/* Allow broadcasting, listen to multicast */
|
||||
|
||||
#define CAP_NET_BROADCAST 11
|
||||
|
||||
/* Allow interface configuration */
|
||||
/* Allow administration of IP firewall, masquerading and accounting */
|
||||
/* Allow setting debug option on sockets */
|
||||
/* Allow modification of routing tables */
|
||||
/* Allow setting arbitrary process / process group ownership on
|
||||
sockets */
|
||||
/* Allow binding to any address for transparent proxying (also via NET_RAW) */
|
||||
/* Allow setting TOS (type of service) */
|
||||
/* Allow setting promiscuous mode */
|
||||
/* Allow clearing driver statistics */
|
||||
/* Allow multicasting */
|
||||
/* Allow read/write of device-specific registers */
|
||||
/* Allow activation of ATM control sockets */
|
||||
|
||||
#define CAP_NET_ADMIN 12
|
||||
|
||||
/* Allow use of RAW sockets */
|
||||
/* Allow use of PACKET sockets */
|
||||
/* Allow binding to any address for transparent proxying (also via NET_ADMIN) */
|
||||
|
||||
#define CAP_NET_RAW 13
|
||||
|
||||
/* Allow locking of shared memory segments */
|
||||
/* Allow mlock and mlockall (which doesn't really have anything to do
|
||||
with IPC) */
|
||||
|
||||
#define CAP_IPC_LOCK 14
|
||||
|
||||
/* Override IPC ownership checks */
|
||||
|
||||
#define CAP_IPC_OWNER 15
|
||||
|
||||
/* Insert and remove kernel modules - modify kernel without limit */
|
||||
#define CAP_SYS_MODULE 16
|
||||
|
||||
/* Allow ioperm/iopl access */
|
||||
/* Allow sending USB messages to any device via /dev/bus/usb */
|
||||
|
||||
#define CAP_SYS_RAWIO 17
|
||||
|
||||
/* Allow use of chroot() */
|
||||
|
||||
#define CAP_SYS_CHROOT 18
|
||||
|
||||
/* Allow ptrace() of any process */
|
||||
|
||||
#define CAP_SYS_PTRACE 19
|
||||
|
||||
/* Allow configuration of process accounting */
|
||||
|
||||
#define CAP_SYS_PACCT 20
|
||||
|
||||
/* Allow configuration of the secure attention key */
|
||||
/* Allow administration of the random device */
|
||||
/* Allow examination and configuration of disk quotas */
|
||||
/* Allow setting the domainname */
|
||||
/* Allow setting the hostname */
|
||||
/* Allow calling bdflush() */
|
||||
/* Allow mount() and umount(), setting up new smb connection */
|
||||
/* Allow some autofs root ioctls */
|
||||
/* Allow nfsservctl */
|
||||
/* Allow VM86_REQUEST_IRQ */
|
||||
/* Allow to read/write pci config on alpha */
|
||||
/* Allow irix_prctl on mips (setstacksize) */
|
||||
/* Allow flushing all cache on m68k (sys_cacheflush) */
|
||||
/* Allow removing semaphores */
|
||||
/* Used instead of CAP_CHOWN to "chown" IPC message queues, semaphores
|
||||
and shared memory */
|
||||
/* Allow locking/unlocking of shared memory segment */
|
||||
/* Allow turning swap on/off */
|
||||
/* Allow forged pids on socket credentials passing */
|
||||
/* Allow setting readahead and flushing buffers on block devices */
|
||||
/* Allow setting geometry in floppy driver */
|
||||
/* Allow turning DMA on/off in xd driver */
|
||||
/* Allow administration of md devices (mostly the above, but some
|
||||
extra ioctls) */
|
||||
/* Allow tuning the ide driver */
|
||||
/* Allow access to the nvram device */
|
||||
/* Allow administration of apm_bios, serial and bttv (TV) device */
|
||||
/* Allow manufacturer commands in isdn CAPI support driver */
|
||||
/* Allow reading non-standardized portions of pci configuration space */
|
||||
/* Allow DDI debug ioctl on sbpcd driver */
|
||||
/* Allow setting up serial ports */
|
||||
/* Allow sending raw qic-117 commands */
|
||||
/* Allow enabling/disabling tagged queuing on SCSI controllers and sending
|
||||
arbitrary SCSI commands */
|
||||
/* Allow setting encryption key on loopback filesystem */
|
||||
/* Allow setting zone reclaim policy */
|
||||
|
||||
#define CAP_SYS_ADMIN 21
|
||||
|
||||
/* Allow use of reboot() */
|
||||
|
||||
#define CAP_SYS_BOOT 22
|
||||
|
||||
/* Allow raising priority and setting priority on other (different
|
||||
UID) processes */
|
||||
/* Allow use of FIFO and round-robin (realtime) scheduling on own
|
||||
processes and setting the scheduling algorithm used by another
|
||||
process. */
|
||||
/* Allow setting cpu affinity on other processes */
|
||||
|
||||
#define CAP_SYS_NICE 23
|
||||
|
||||
/* Override resource limits. Set resource limits. */
|
||||
/* Override quota limits. */
|
||||
/* Override reserved space on ext2 filesystem */
|
||||
/* Modify data journaling mode on ext3 filesystem (uses journaling
|
||||
resources) */
|
||||
/* NOTE: ext2 honors fsuid when checking for resource overrides, so
|
||||
you can override using fsuid too */
|
||||
/* Override size restrictions on IPC message queues */
|
||||
/* Allow more than 64hz interrupts from the real-time clock */
|
||||
/* Override max number of consoles on console allocation */
|
||||
/* Override max number of keymaps */
|
||||
|
||||
#define CAP_SYS_RESOURCE 24
|
||||
|
||||
/* Allow manipulation of system clock */
|
||||
/* Allow irix_stime on mips */
|
||||
/* Allow setting the real-time clock */
|
||||
|
||||
#define CAP_SYS_TIME 25
|
||||
|
||||
/* Allow configuration of tty devices */
|
||||
/* Allow vhangup() of tty */
|
||||
|
||||
#define CAP_SYS_TTY_CONFIG 26
|
||||
|
||||
/* Allow the privileged aspects of mknod() */
|
||||
|
||||
#define CAP_MKNOD 27
|
||||
|
||||
/* Allow taking of leases on files */
|
||||
|
||||
#define CAP_LEASE 28
|
||||
|
||||
/* Allow writing the audit log via unicast netlink socket */
|
||||
|
||||
#define CAP_AUDIT_WRITE 29
|
||||
|
||||
/* Allow configuration of audit via unicast netlink socket */
|
||||
|
||||
#define CAP_AUDIT_CONTROL 30
|
||||
|
||||
#define CAP_SETFCAP 31
|
||||
|
||||
/* Override MAC access.
|
||||
The base kernel enforces no MAC policy.
|
||||
An LSM may enforce a MAC policy, and if it does and it chooses
|
||||
to implement capability based overrides of that policy, this is
|
||||
the capability it should use to do so. */
|
||||
|
||||
#define CAP_MAC_OVERRIDE 32
|
||||
|
||||
/* Allow MAC configuration or state changes.
|
||||
The base kernel requires no MAC configuration.
|
||||
An LSM may enforce a MAC policy, and if it does and it chooses
|
||||
to implement capability based checks on modifications to that
|
||||
policy or the data required to maintain it, this is the
|
||||
capability it should use to do so. */
|
||||
|
||||
#define CAP_MAC_ADMIN 33
|
||||
|
||||
/* Allow configuring the kernel's syslog (printk behaviour) */
|
||||
|
||||
#define CAP_SYSLOG 34
|
||||
|
||||
/* Allow triggering something that will wake the system */
|
||||
|
||||
#define CAP_WAKE_ALARM 35
|
||||
|
||||
/* Allow preventing system suspends */
|
||||
|
||||
#define CAP_BLOCK_SUSPEND 36
|
||||
|
||||
/* Allow reading the audit log via multicast netlink socket */
|
||||
|
||||
#define CAP_AUDIT_READ 37
|
||||
|
||||
|
||||
#define CAP_LAST_CAP CAP_AUDIT_READ
|
||||
|
||||
#define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
|
||||
|
||||
/*
|
||||
* Bit location of each capability (used by user-space library and kernel)
|
||||
*/
|
||||
|
||||
#define CAP_TO_INDEX(x) ((x) >> 5) /* 1 << 5 == bits in __u32 */
|
||||
#define CAP_TO_MASK(x) (1 << ((x) & 31)) /* mask for indexed __u32 */
|
||||
|
||||
|
||||
#endif /* _LINUX_CAPABILITY_H */
|
||||
132
ramdisk/initramfs/glibc_riscv64/usr/include/linux/capi.h
Normal file
132
ramdisk/initramfs/glibc_riscv64/usr/include/linux/capi.h
Normal file
@ -0,0 +1,132 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* $Id: capi.h,v 1.4.6.1 2001/09/23 22:25:05 kai Exp $
|
||||
*
|
||||
* CAPI 2.0 Interface for Linux
|
||||
*
|
||||
* Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de)
|
||||
*
|
||||
* This software may be used and distributed according to the terms
|
||||
* of the GNU General Public License, incorporated herein by reference.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_CAPI_H__
|
||||
#define __LINUX_CAPI_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/kernelcapi.h>
|
||||
|
||||
/*
|
||||
* CAPI_REGISTER
|
||||
*/
|
||||
|
||||
typedef struct capi_register_params { /* CAPI_REGISTER */
|
||||
__u32 level3cnt; /* No. of simulatneous user data connections */
|
||||
__u32 datablkcnt; /* No. of buffered data messages */
|
||||
__u32 datablklen; /* Size of buffered data messages */
|
||||
} capi_register_params;
|
||||
|
||||
#define CAPI_REGISTER _IOW('C',0x01,struct capi_register_params)
|
||||
|
||||
/*
|
||||
* CAPI_GET_MANUFACTURER
|
||||
*/
|
||||
|
||||
#define CAPI_MANUFACTURER_LEN 64
|
||||
|
||||
#define CAPI_GET_MANUFACTURER _IOWR('C',0x06,int) /* broken: wanted size 64 (CAPI_MANUFACTURER_LEN) */
|
||||
|
||||
/*
|
||||
* CAPI_GET_VERSION
|
||||
*/
|
||||
|
||||
typedef struct capi_version {
|
||||
__u32 majorversion;
|
||||
__u32 minorversion;
|
||||
__u32 majormanuversion;
|
||||
__u32 minormanuversion;
|
||||
} capi_version;
|
||||
|
||||
#define CAPI_GET_VERSION _IOWR('C',0x07,struct capi_version)
|
||||
|
||||
/*
|
||||
* CAPI_GET_SERIAL
|
||||
*/
|
||||
|
||||
#define CAPI_SERIAL_LEN 8
|
||||
#define CAPI_GET_SERIAL _IOWR('C',0x08,int) /* broken: wanted size 8 (CAPI_SERIAL_LEN) */
|
||||
|
||||
/*
|
||||
* CAPI_GET_PROFILE
|
||||
*/
|
||||
|
||||
typedef struct capi_profile {
|
||||
__u16 ncontroller; /* number of installed controller */
|
||||
__u16 nbchannel; /* number of B-Channels */
|
||||
__u32 goptions; /* global options */
|
||||
__u32 support1; /* B1 protocols support */
|
||||
__u32 support2; /* B2 protocols support */
|
||||
__u32 support3; /* B3 protocols support */
|
||||
__u32 reserved[6]; /* reserved */
|
||||
__u32 manu[5]; /* manufacturer specific information */
|
||||
} capi_profile;
|
||||
|
||||
#define CAPI_GET_PROFILE _IOWR('C',0x09,struct capi_profile)
|
||||
|
||||
typedef struct capi_manufacturer_cmd {
|
||||
unsigned long cmd;
|
||||
void *data;
|
||||
} capi_manufacturer_cmd;
|
||||
|
||||
/*
|
||||
* CAPI_MANUFACTURER_CMD
|
||||
*/
|
||||
|
||||
#define CAPI_MANUFACTURER_CMD _IOWR('C',0x20, struct capi_manufacturer_cmd)
|
||||
|
||||
/*
|
||||
* CAPI_GET_ERRCODE
|
||||
* capi errcode is set, * if read, write, or ioctl returns EIO,
|
||||
* ioctl returns errcode directly, and in arg, if != 0
|
||||
*/
|
||||
|
||||
#define CAPI_GET_ERRCODE _IOR('C',0x21, __u16)
|
||||
|
||||
/*
|
||||
* CAPI_INSTALLED
|
||||
*/
|
||||
#define CAPI_INSTALLED _IOR('C',0x22, __u16)
|
||||
|
||||
|
||||
/*
|
||||
* member contr is input for
|
||||
* CAPI_GET_MANUFACTURER, CAPI_GET_VERSION, CAPI_GET_SERIAL
|
||||
* and CAPI_GET_PROFILE
|
||||
*/
|
||||
typedef union capi_ioctl_struct {
|
||||
__u32 contr;
|
||||
capi_register_params rparams;
|
||||
__u8 manufacturer[CAPI_MANUFACTURER_LEN];
|
||||
capi_version version;
|
||||
__u8 serial[CAPI_SERIAL_LEN];
|
||||
capi_profile profile;
|
||||
capi_manufacturer_cmd cmd;
|
||||
__u16 errcode;
|
||||
} capi_ioctl_struct;
|
||||
|
||||
/*
|
||||
* Middleware extension
|
||||
*/
|
||||
|
||||
#define CAPIFLAG_HIGHJACKING 0x0001
|
||||
|
||||
#define CAPI_GET_FLAGS _IOR('C',0x23, unsigned)
|
||||
#define CAPI_SET_FLAGS _IOR('C',0x24, unsigned)
|
||||
#define CAPI_CLR_FLAGS _IOR('C',0x25, unsigned)
|
||||
|
||||
#define CAPI_NCCI_OPENCOUNT _IOR('C',0x26, unsigned)
|
||||
|
||||
#define CAPI_NCCI_GETUNIT _IOR('C',0x27, unsigned)
|
||||
|
||||
#endif /* __LINUX_CAPI_H__ */
|
||||
131
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cciss_defs.h
Normal file
131
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cciss_defs.h
Normal file
@ -0,0 +1,131 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef CCISS_DEFS_H
|
||||
#define CCISS_DEFS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* general boundary definitions */
|
||||
#define SENSEINFOBYTES 32 /* note that this value may vary
|
||||
between host implementations */
|
||||
|
||||
/* Command Status value */
|
||||
#define CMD_SUCCESS 0x0000
|
||||
#define CMD_TARGET_STATUS 0x0001
|
||||
#define CMD_DATA_UNDERRUN 0x0002
|
||||
#define CMD_DATA_OVERRUN 0x0003
|
||||
#define CMD_INVALID 0x0004
|
||||
#define CMD_PROTOCOL_ERR 0x0005
|
||||
#define CMD_HARDWARE_ERR 0x0006
|
||||
#define CMD_CONNECTION_LOST 0x0007
|
||||
#define CMD_ABORTED 0x0008
|
||||
#define CMD_ABORT_FAILED 0x0009
|
||||
#define CMD_UNSOLICITED_ABORT 0x000A
|
||||
#define CMD_TIMEOUT 0x000B
|
||||
#define CMD_UNABORTABLE 0x000C
|
||||
|
||||
/* transfer direction */
|
||||
#define XFER_NONE 0x00
|
||||
#define XFER_WRITE 0x01
|
||||
#define XFER_READ 0x02
|
||||
#define XFER_RSVD 0x03
|
||||
|
||||
/* task attribute */
|
||||
#define ATTR_UNTAGGED 0x00
|
||||
#define ATTR_SIMPLE 0x04
|
||||
#define ATTR_HEADOFQUEUE 0x05
|
||||
#define ATTR_ORDERED 0x06
|
||||
#define ATTR_ACA 0x07
|
||||
|
||||
/* cdb type */
|
||||
#define TYPE_CMD 0x00
|
||||
#define TYPE_MSG 0x01
|
||||
|
||||
/* Type defs used in the following structs */
|
||||
#define BYTE __u8
|
||||
#define WORD __u16
|
||||
#define HWORD __u16
|
||||
#define DWORD __u32
|
||||
|
||||
#define CISS_MAX_LUN 1024
|
||||
|
||||
#define LEVEL2LUN 1 /* index into Target(x) structure, due to byte swapping */
|
||||
#define LEVEL3LUN 0
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
/* Command List Structure */
|
||||
typedef union _SCSI3Addr_struct {
|
||||
struct {
|
||||
BYTE Dev;
|
||||
BYTE Bus:6;
|
||||
BYTE Mode:2; /* b00 */
|
||||
} PeripDev;
|
||||
struct {
|
||||
BYTE DevLSB;
|
||||
BYTE DevMSB:6;
|
||||
BYTE Mode:2; /* b01 */
|
||||
} LogDev;
|
||||
struct {
|
||||
BYTE Dev:5;
|
||||
BYTE Bus:3;
|
||||
BYTE Targ:6;
|
||||
BYTE Mode:2; /* b10 */
|
||||
} LogUnit;
|
||||
} SCSI3Addr_struct;
|
||||
|
||||
typedef struct _PhysDevAddr_struct {
|
||||
DWORD TargetId:24;
|
||||
DWORD Bus:6;
|
||||
DWORD Mode:2;
|
||||
SCSI3Addr_struct Target[2]; /* 2 level target device addr */
|
||||
} PhysDevAddr_struct;
|
||||
|
||||
typedef struct _LogDevAddr_struct {
|
||||
DWORD VolId:30;
|
||||
DWORD Mode:2;
|
||||
BYTE reserved[4];
|
||||
} LogDevAddr_struct;
|
||||
|
||||
typedef union _LUNAddr_struct {
|
||||
BYTE LunAddrBytes[8];
|
||||
SCSI3Addr_struct SCSI3Lun[4];
|
||||
PhysDevAddr_struct PhysDev;
|
||||
LogDevAddr_struct LogDev;
|
||||
} LUNAddr_struct;
|
||||
|
||||
typedef struct _RequestBlock_struct {
|
||||
BYTE CDBLen;
|
||||
struct {
|
||||
BYTE Type:3;
|
||||
BYTE Attribute:3;
|
||||
BYTE Direction:2;
|
||||
} Type;
|
||||
HWORD Timeout;
|
||||
BYTE CDB[16];
|
||||
} RequestBlock_struct;
|
||||
|
||||
typedef union _MoreErrInfo_struct{
|
||||
struct {
|
||||
BYTE Reserved[3];
|
||||
BYTE Type;
|
||||
DWORD ErrorInfo;
|
||||
} Common_Info;
|
||||
struct{
|
||||
BYTE Reserved[2];
|
||||
BYTE offense_size; /* size of offending entry */
|
||||
BYTE offense_num; /* byte # of offense 0-base */
|
||||
DWORD offense_value;
|
||||
} Invalid_Cmd;
|
||||
} MoreErrInfo_struct;
|
||||
typedef struct _ErrorInfo_struct {
|
||||
BYTE ScsiStatus;
|
||||
BYTE SenseLen;
|
||||
HWORD CommandStatus;
|
||||
DWORD ResidualCnt;
|
||||
MoreErrInfo_struct MoreErrInfo;
|
||||
BYTE SenseInfo[SENSEINFOBYTES];
|
||||
} ErrorInfo_struct;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* CCISS_DEFS_H */
|
||||
@ -0,0 +1,89 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef CCISS_IOCTLH
|
||||
#define CCISS_IOCTLH
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/cciss_defs.h>
|
||||
|
||||
#define CCISS_IOC_MAGIC 'B'
|
||||
|
||||
|
||||
typedef struct _cciss_pci_info_struct
|
||||
{
|
||||
unsigned char bus;
|
||||
unsigned char dev_fn;
|
||||
unsigned short domain;
|
||||
__u32 board_id;
|
||||
} cciss_pci_info_struct;
|
||||
|
||||
typedef struct _cciss_coalint_struct
|
||||
{
|
||||
__u32 delay;
|
||||
__u32 count;
|
||||
} cciss_coalint_struct;
|
||||
|
||||
typedef char NodeName_type[16];
|
||||
|
||||
typedef __u32 Heartbeat_type;
|
||||
|
||||
#define CISS_PARSCSIU2 0x0001
|
||||
#define CISS_PARCSCIU3 0x0002
|
||||
#define CISS_FIBRE1G 0x0100
|
||||
#define CISS_FIBRE2G 0x0200
|
||||
typedef __u32 BusTypes_type;
|
||||
|
||||
typedef char FirmwareVer_type[4];
|
||||
typedef __u32 DriverVer_type;
|
||||
|
||||
#define MAX_KMALLOC_SIZE 128000
|
||||
|
||||
typedef struct _IOCTL_Command_struct {
|
||||
LUNAddr_struct LUN_info;
|
||||
RequestBlock_struct Request;
|
||||
ErrorInfo_struct error_info;
|
||||
WORD buf_size; /* size in bytes of the buf */
|
||||
BYTE *buf;
|
||||
} IOCTL_Command_struct;
|
||||
|
||||
typedef struct _BIG_IOCTL_Command_struct {
|
||||
LUNAddr_struct LUN_info;
|
||||
RequestBlock_struct Request;
|
||||
ErrorInfo_struct error_info;
|
||||
DWORD malloc_size; /* < MAX_KMALLOC_SIZE in cciss.c */
|
||||
DWORD buf_size; /* size in bytes of the buf */
|
||||
/* < malloc_size * MAXSGENTRIES */
|
||||
BYTE *buf;
|
||||
} BIG_IOCTL_Command_struct;
|
||||
|
||||
typedef struct _LogvolInfo_struct{
|
||||
__u32 LunID;
|
||||
int num_opens; /* number of opens on the logical volume */
|
||||
int num_parts; /* number of partitions configured on logvol */
|
||||
} LogvolInfo_struct;
|
||||
|
||||
#define CCISS_GETPCIINFO _IOR(CCISS_IOC_MAGIC, 1, cciss_pci_info_struct)
|
||||
|
||||
#define CCISS_GETINTINFO _IOR(CCISS_IOC_MAGIC, 2, cciss_coalint_struct)
|
||||
#define CCISS_SETINTINFO _IOW(CCISS_IOC_MAGIC, 3, cciss_coalint_struct)
|
||||
|
||||
#define CCISS_GETNODENAME _IOR(CCISS_IOC_MAGIC, 4, NodeName_type)
|
||||
#define CCISS_SETNODENAME _IOW(CCISS_IOC_MAGIC, 5, NodeName_type)
|
||||
|
||||
#define CCISS_GETHEARTBEAT _IOR(CCISS_IOC_MAGIC, 6, Heartbeat_type)
|
||||
#define CCISS_GETBUSTYPES _IOR(CCISS_IOC_MAGIC, 7, BusTypes_type)
|
||||
#define CCISS_GETFIRMVER _IOR(CCISS_IOC_MAGIC, 8, FirmwareVer_type)
|
||||
#define CCISS_GETDRIVVER _IOR(CCISS_IOC_MAGIC, 9, DriverVer_type)
|
||||
#define CCISS_REVALIDVOLS _IO(CCISS_IOC_MAGIC, 10)
|
||||
#define CCISS_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct)
|
||||
#define CCISS_DEREGDISK _IO(CCISS_IOC_MAGIC, 12)
|
||||
|
||||
/* no longer used... use REGNEWD instead */
|
||||
#define CCISS_REGNEWDISK _IOW(CCISS_IOC_MAGIC, 13, int)
|
||||
|
||||
#define CCISS_REGNEWD _IO(CCISS_IOC_MAGIC, 14)
|
||||
#define CCISS_RESCANDISK _IO(CCISS_IOC_MAGIC, 16)
|
||||
#define CCISS_GETLUNINFO _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct)
|
||||
#define CCISS_BIG_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL_Command_struct)
|
||||
|
||||
#endif /* CCISS_IOCTLH */
|
||||
947
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cdrom.h
Normal file
947
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cdrom.h
Normal file
@ -0,0 +1,947 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* -- <linux/cdrom.h>
|
||||
* General header file for linux CD-ROM drivers
|
||||
* Copyright (C) 1992 David Giller, rafetmad@oxy.edu
|
||||
* 1994, 1995 Eberhard Mönkeberg, emoenke@gwdg.de
|
||||
* 1996 David van Leeuwen, david@tm.tno.nl
|
||||
* 1997, 1998 Erik Andersen, andersee@debian.org
|
||||
* 1998-2002 Jens Axboe, axboe@suse.de
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CDROM_H
|
||||
#define _LINUX_CDROM_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/*******************************************************
|
||||
* As of Linux 2.1.x, all Linux CD-ROM application programs will use this
|
||||
* (and only this) include file. It is my hope to provide Linux with
|
||||
* a uniform interface between software accessing CD-ROMs and the various
|
||||
* device drivers that actually talk to the drives. There may still be
|
||||
* 23 different kinds of strange CD-ROM drives, but at least there will
|
||||
* now be one, and only one, Linux CD-ROM interface.
|
||||
*
|
||||
* Additionally, as of Linux 2.1.x, all Linux application programs
|
||||
* should use the O_NONBLOCK option when opening a CD-ROM device
|
||||
* for subsequent ioctl commands. This allows for neat system errors
|
||||
* like "No medium found" or "Wrong medium type" upon attempting to
|
||||
* mount or play an empty slot, mount an audio disc, or play a data disc.
|
||||
* Generally, changing an application program to support O_NONBLOCK
|
||||
* is as easy as the following:
|
||||
* - drive = open("/dev/cdrom", O_RDONLY);
|
||||
* + drive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK);
|
||||
* It is worth the small change.
|
||||
*
|
||||
* Patches for many common CD programs (provided by David A. van Leeuwen)
|
||||
* can be found at: ftp://ftp.gwdg.de/pub/linux/cdrom/drivers/cm206/
|
||||
*
|
||||
*******************************************************/
|
||||
|
||||
/* When a driver supports a certain function, but the cdrom drive we are
|
||||
* using doesn't, we will return the error EDRIVE_CANT_DO_THIS. We will
|
||||
* borrow the "Operation not supported" error from the network folks to
|
||||
* accomplish this. Maybe someday we will get a more targeted error code,
|
||||
* but this will do for now... */
|
||||
#define EDRIVE_CANT_DO_THIS EOPNOTSUPP
|
||||
|
||||
/*******************************************************
|
||||
* The CD-ROM IOCTL commands -- these should be supported by
|
||||
* all the various cdrom drivers. For the CD-ROM ioctls, we
|
||||
* will commandeer byte 0x53, or 'S'.
|
||||
*******************************************************/
|
||||
#define CDROMPAUSE 0x5301 /* Pause Audio Operation */
|
||||
#define CDROMRESUME 0x5302 /* Resume paused Audio Operation */
|
||||
#define CDROMPLAYMSF 0x5303 /* Play Audio MSF (struct cdrom_msf) */
|
||||
#define CDROMPLAYTRKIND 0x5304 /* Play Audio Track/index
|
||||
(struct cdrom_ti) */
|
||||
#define CDROMREADTOCHDR 0x5305 /* Read TOC header
|
||||
(struct cdrom_tochdr) */
|
||||
#define CDROMREADTOCENTRY 0x5306 /* Read TOC entry
|
||||
(struct cdrom_tocentry) */
|
||||
#define CDROMSTOP 0x5307 /* Stop the cdrom drive */
|
||||
#define CDROMSTART 0x5308 /* Start the cdrom drive */
|
||||
#define CDROMEJECT 0x5309 /* Ejects the cdrom media */
|
||||
#define CDROMVOLCTRL 0x530a /* Control output volume
|
||||
(struct cdrom_volctrl) */
|
||||
#define CDROMSUBCHNL 0x530b /* Read subchannel data
|
||||
(struct cdrom_subchnl) */
|
||||
#define CDROMREADMODE2 0x530c /* Read CDROM mode 2 data (2336 Bytes)
|
||||
(struct cdrom_read) */
|
||||
#define CDROMREADMODE1 0x530d /* Read CDROM mode 1 data (2048 Bytes)
|
||||
(struct cdrom_read) */
|
||||
#define CDROMREADAUDIO 0x530e /* (struct cdrom_read_audio) */
|
||||
#define CDROMEJECT_SW 0x530f /* enable(1)/disable(0) auto-ejecting */
|
||||
#define CDROMMULTISESSION 0x5310 /* Obtain the start-of-last-session
|
||||
address of multi session disks
|
||||
(struct cdrom_multisession) */
|
||||
#define CDROM_GET_MCN 0x5311 /* Obtain the "Universal Product Code"
|
||||
if available (struct cdrom_mcn) */
|
||||
#define CDROM_GET_UPC CDROM_GET_MCN /* This one is deprecated,
|
||||
but here anyway for compatibility */
|
||||
#define CDROMRESET 0x5312 /* hard-reset the drive */
|
||||
#define CDROMVOLREAD 0x5313 /* Get the drive's volume setting
|
||||
(struct cdrom_volctrl) */
|
||||
#define CDROMREADRAW 0x5314 /* read data in raw mode (2352 Bytes)
|
||||
(struct cdrom_read) */
|
||||
/*
|
||||
* These ioctls are used only used in aztcd.c and optcd.c
|
||||
*/
|
||||
#define CDROMREADCOOKED 0x5315 /* read data in cooked mode */
|
||||
#define CDROMSEEK 0x5316 /* seek msf address */
|
||||
|
||||
/*
|
||||
* This ioctl is only used by the scsi-cd driver.
|
||||
It is for playing audio in logical block addressing mode.
|
||||
*/
|
||||
#define CDROMPLAYBLK 0x5317 /* (struct cdrom_blk) */
|
||||
|
||||
/*
|
||||
* These ioctls are only used in optcd.c
|
||||
*/
|
||||
#define CDROMREADALL 0x5318 /* read all 2646 bytes */
|
||||
|
||||
/*
|
||||
* These ioctls are (now) only in ide-cd.c for controlling
|
||||
* drive spindown time. They should be implemented in the
|
||||
* Uniform driver, via generic packet commands, GPCMD_MODE_SELECT_10,
|
||||
* GPCMD_MODE_SENSE_10 and the GPMODE_POWER_PAGE...
|
||||
* -Erik
|
||||
*/
|
||||
#define CDROMGETSPINDOWN 0x531d
|
||||
#define CDROMSETSPINDOWN 0x531e
|
||||
|
||||
/*
|
||||
* These ioctls are implemented through the uniform CD-ROM driver
|
||||
* They _will_ be adopted by all CD-ROM drivers, when all the CD-ROM
|
||||
* drivers are eventually ported to the uniform CD-ROM driver interface.
|
||||
*/
|
||||
#define CDROMCLOSETRAY 0x5319 /* pendant of CDROMEJECT */
|
||||
#define CDROM_SET_OPTIONS 0x5320 /* Set behavior options */
|
||||
#define CDROM_CLEAR_OPTIONS 0x5321 /* Clear behavior options */
|
||||
#define CDROM_SELECT_SPEED 0x5322 /* Set the CD-ROM speed */
|
||||
#define CDROM_SELECT_DISC 0x5323 /* Select disc (for juke-boxes) */
|
||||
#define CDROM_MEDIA_CHANGED 0x5325 /* Check is media changed */
|
||||
#define CDROM_DRIVE_STATUS 0x5326 /* Get tray position, etc. */
|
||||
#define CDROM_DISC_STATUS 0x5327 /* Get disc type, etc. */
|
||||
#define CDROM_CHANGER_NSLOTS 0x5328 /* Get number of slots */
|
||||
#define CDROM_LOCKDOOR 0x5329 /* lock or unlock door */
|
||||
#define CDROM_DEBUG 0x5330 /* Turn debug messages on/off */
|
||||
#define CDROM_GET_CAPABILITY 0x5331 /* get capabilities */
|
||||
|
||||
/* Note that scsi/scsi_ioctl.h also uses 0x5382 - 0x5386.
|
||||
* Future CDROM ioctls should be kept below 0x537F
|
||||
*/
|
||||
|
||||
/* This ioctl is only used by sbpcd at the moment */
|
||||
#define CDROMAUDIOBUFSIZ 0x5382 /* set the audio buffer size */
|
||||
/* conflict with SCSI_IOCTL_GET_IDLUN */
|
||||
|
||||
/* DVD-ROM Specific ioctls */
|
||||
#define DVD_READ_STRUCT 0x5390 /* Read structure */
|
||||
#define DVD_WRITE_STRUCT 0x5391 /* Write structure */
|
||||
#define DVD_AUTH 0x5392 /* Authentication */
|
||||
|
||||
#define CDROM_SEND_PACKET 0x5393 /* send a packet to the drive */
|
||||
#define CDROM_NEXT_WRITABLE 0x5394 /* get next writable block */
|
||||
#define CDROM_LAST_WRITTEN 0x5395 /* get last block written on disc */
|
||||
|
||||
/*******************************************************
|
||||
* CDROM IOCTL structures
|
||||
*******************************************************/
|
||||
|
||||
/* Address in MSF format */
|
||||
struct cdrom_msf0
|
||||
{
|
||||
__u8 minute;
|
||||
__u8 second;
|
||||
__u8 frame;
|
||||
};
|
||||
|
||||
/* Address in either MSF or logical format */
|
||||
union cdrom_addr
|
||||
{
|
||||
struct cdrom_msf0 msf;
|
||||
int lba;
|
||||
};
|
||||
|
||||
/* This struct is used by the CDROMPLAYMSF ioctl */
|
||||
struct cdrom_msf
|
||||
{
|
||||
__u8 cdmsf_min0; /* start minute */
|
||||
__u8 cdmsf_sec0; /* start second */
|
||||
__u8 cdmsf_frame0; /* start frame */
|
||||
__u8 cdmsf_min1; /* end minute */
|
||||
__u8 cdmsf_sec1; /* end second */
|
||||
__u8 cdmsf_frame1; /* end frame */
|
||||
};
|
||||
|
||||
/* This struct is used by the CDROMPLAYTRKIND ioctl */
|
||||
struct cdrom_ti
|
||||
{
|
||||
__u8 cdti_trk0; /* start track */
|
||||
__u8 cdti_ind0; /* start index */
|
||||
__u8 cdti_trk1; /* end track */
|
||||
__u8 cdti_ind1; /* end index */
|
||||
};
|
||||
|
||||
/* This struct is used by the CDROMREADTOCHDR ioctl */
|
||||
struct cdrom_tochdr
|
||||
{
|
||||
__u8 cdth_trk0; /* start track */
|
||||
__u8 cdth_trk1; /* end track */
|
||||
};
|
||||
|
||||
/* This struct is used by the CDROMVOLCTRL and CDROMVOLREAD ioctls */
|
||||
struct cdrom_volctrl
|
||||
{
|
||||
__u8 channel0;
|
||||
__u8 channel1;
|
||||
__u8 channel2;
|
||||
__u8 channel3;
|
||||
};
|
||||
|
||||
/* This struct is used by the CDROMSUBCHNL ioctl */
|
||||
struct cdrom_subchnl
|
||||
{
|
||||
__u8 cdsc_format;
|
||||
__u8 cdsc_audiostatus;
|
||||
__u8 cdsc_adr: 4;
|
||||
__u8 cdsc_ctrl: 4;
|
||||
__u8 cdsc_trk;
|
||||
__u8 cdsc_ind;
|
||||
union cdrom_addr cdsc_absaddr;
|
||||
union cdrom_addr cdsc_reladdr;
|
||||
};
|
||||
|
||||
|
||||
/* This struct is used by the CDROMREADTOCENTRY ioctl */
|
||||
struct cdrom_tocentry
|
||||
{
|
||||
__u8 cdte_track;
|
||||
__u8 cdte_adr :4;
|
||||
__u8 cdte_ctrl :4;
|
||||
__u8 cdte_format;
|
||||
union cdrom_addr cdte_addr;
|
||||
__u8 cdte_datamode;
|
||||
};
|
||||
|
||||
/* This struct is used by the CDROMREADMODE1, and CDROMREADMODE2 ioctls */
|
||||
struct cdrom_read
|
||||
{
|
||||
int cdread_lba;
|
||||
char *cdread_bufaddr;
|
||||
int cdread_buflen;
|
||||
};
|
||||
|
||||
/* This struct is used by the CDROMREADAUDIO ioctl */
|
||||
struct cdrom_read_audio
|
||||
{
|
||||
union cdrom_addr addr; /* frame address */
|
||||
__u8 addr_format; /* CDROM_LBA or CDROM_MSF */
|
||||
int nframes; /* number of 2352-byte-frames to read at once */
|
||||
__u8 *buf; /* frame buffer (size: nframes*2352 bytes) */
|
||||
};
|
||||
|
||||
/* This struct is used with the CDROMMULTISESSION ioctl */
|
||||
struct cdrom_multisession
|
||||
{
|
||||
union cdrom_addr addr; /* frame address: start-of-last-session
|
||||
(not the new "frame 16"!). Only valid
|
||||
if the "xa_flag" is true. */
|
||||
__u8 xa_flag; /* 1: "is XA disk" */
|
||||
__u8 addr_format; /* CDROM_LBA or CDROM_MSF */
|
||||
};
|
||||
|
||||
/* This struct is used with the CDROM_GET_MCN ioctl.
|
||||
* Very few audio discs actually have Universal Product Code information,
|
||||
* which should just be the Medium Catalog Number on the box. Also note
|
||||
* that the way the codeis written on CD is _not_ uniform across all discs!
|
||||
*/
|
||||
struct cdrom_mcn
|
||||
{
|
||||
__u8 medium_catalog_number[14]; /* 13 ASCII digits, null-terminated */
|
||||
};
|
||||
|
||||
/* This is used by the CDROMPLAYBLK ioctl */
|
||||
struct cdrom_blk
|
||||
{
|
||||
unsigned from;
|
||||
unsigned short len;
|
||||
};
|
||||
|
||||
#define CDROM_PACKET_SIZE 12
|
||||
|
||||
#define CGC_DATA_UNKNOWN 0
|
||||
#define CGC_DATA_WRITE 1
|
||||
#define CGC_DATA_READ 2
|
||||
#define CGC_DATA_NONE 3
|
||||
|
||||
/* for CDROM_PACKET_COMMAND ioctl */
|
||||
struct cdrom_generic_command
|
||||
{
|
||||
unsigned char cmd[CDROM_PACKET_SIZE];
|
||||
unsigned char *buffer;
|
||||
unsigned int buflen;
|
||||
int stat;
|
||||
struct request_sense *sense;
|
||||
unsigned char data_direction;
|
||||
int quiet;
|
||||
int timeout;
|
||||
void *reserved[1]; /* unused, actually */
|
||||
};
|
||||
|
||||
/*
|
||||
* A CD-ROM physical sector size is 2048, 2052, 2056, 2324, 2332, 2336,
|
||||
* 2340, or 2352 bytes long.
|
||||
|
||||
* Sector types of the standard CD-ROM data formats:
|
||||
*
|
||||
* format sector type user data size (bytes)
|
||||
* -----------------------------------------------------------------------------
|
||||
* 1 (Red Book) CD-DA 2352 (CD_FRAMESIZE_RAW)
|
||||
* 2 (Yellow Book) Mode1 Form1 2048 (CD_FRAMESIZE)
|
||||
* 3 (Yellow Book) Mode1 Form2 2336 (CD_FRAMESIZE_RAW0)
|
||||
* 4 (Green Book) Mode2 Form1 2048 (CD_FRAMESIZE)
|
||||
* 5 (Green Book) Mode2 Form2 2328 (2324+4 spare bytes)
|
||||
*
|
||||
*
|
||||
* The layout of the standard CD-ROM data formats:
|
||||
* -----------------------------------------------------------------------------
|
||||
* - audio (red): | audio_sample_bytes |
|
||||
* | 2352 |
|
||||
*
|
||||
* - data (yellow, mode1): | sync - head - data - EDC - zero - ECC |
|
||||
* | 12 - 4 - 2048 - 4 - 8 - 276 |
|
||||
*
|
||||
* - data (yellow, mode2): | sync - head - data |
|
||||
* | 12 - 4 - 2336 |
|
||||
*
|
||||
* - XA data (green, mode2 form1): | sync - head - sub - data - EDC - ECC |
|
||||
* | 12 - 4 - 8 - 2048 - 4 - 276 |
|
||||
*
|
||||
* - XA data (green, mode2 form2): | sync - head - sub - data - Spare |
|
||||
* | 12 - 4 - 8 - 2324 - 4 |
|
||||
*
|
||||
*/
|
||||
|
||||
/* Some generally useful CD-ROM information -- mostly based on the above */
|
||||
#define CD_MINS 74 /* max. minutes per CD, not really a limit */
|
||||
#define CD_SECS 60 /* seconds per minute */
|
||||
#define CD_FRAMES 75 /* frames per second */
|
||||
#define CD_SYNC_SIZE 12 /* 12 sync bytes per raw data frame */
|
||||
#define CD_MSF_OFFSET 150 /* MSF numbering offset of first frame */
|
||||
#define CD_CHUNK_SIZE 24 /* lowest-level "data bytes piece" */
|
||||
#define CD_NUM_OF_CHUNKS 98 /* chunks per frame */
|
||||
#define CD_FRAMESIZE_SUB 96 /* subchannel data "frame" size */
|
||||
#define CD_HEAD_SIZE 4 /* header (address) bytes per raw data frame */
|
||||
#define CD_SUBHEAD_SIZE 8 /* subheader bytes per raw XA data frame */
|
||||
#define CD_EDC_SIZE 4 /* bytes EDC per most raw data frame types */
|
||||
#define CD_ZERO_SIZE 8 /* bytes zero per yellow book mode 1 frame */
|
||||
#define CD_ECC_SIZE 276 /* bytes ECC per most raw data frame types */
|
||||
#define CD_FRAMESIZE 2048 /* bytes per frame, "cooked" mode */
|
||||
#define CD_FRAMESIZE_RAW 2352 /* bytes per frame, "raw" mode */
|
||||
#define CD_FRAMESIZE_RAWER 2646 /* The maximum possible returned bytes */
|
||||
/* most drives don't deliver everything: */
|
||||
#define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE) /*2340*/
|
||||
#define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE) /*2336*/
|
||||
|
||||
#define CD_XA_HEAD (CD_HEAD_SIZE+CD_SUBHEAD_SIZE) /* "before data" part of raw XA frame */
|
||||
#define CD_XA_TAIL (CD_EDC_SIZE+CD_ECC_SIZE) /* "after data" part of raw XA frame */
|
||||
#define CD_XA_SYNC_HEAD (CD_SYNC_SIZE+CD_XA_HEAD) /* sync bytes + header of XA frame */
|
||||
|
||||
/* CD-ROM address types (cdrom_tocentry.cdte_format) */
|
||||
#define CDROM_LBA 0x01 /* "logical block": first frame is #0 */
|
||||
#define CDROM_MSF 0x02 /* "minute-second-frame": binary, not bcd here! */
|
||||
|
||||
/* bit to tell whether track is data or audio (cdrom_tocentry.cdte_ctrl) */
|
||||
#define CDROM_DATA_TRACK 0x04
|
||||
|
||||
/* The leadout track is always 0xAA, regardless of # of tracks on disc */
|
||||
#define CDROM_LEADOUT 0xAA
|
||||
|
||||
/* audio states (from SCSI-2, but seen with other drives, too) */
|
||||
#define CDROM_AUDIO_INVALID 0x00 /* audio status not supported */
|
||||
#define CDROM_AUDIO_PLAY 0x11 /* audio play operation in progress */
|
||||
#define CDROM_AUDIO_PAUSED 0x12 /* audio play operation paused */
|
||||
#define CDROM_AUDIO_COMPLETED 0x13 /* audio play successfully completed */
|
||||
#define CDROM_AUDIO_ERROR 0x14 /* audio play stopped due to error */
|
||||
#define CDROM_AUDIO_NO_STATUS 0x15 /* no current audio status to return */
|
||||
|
||||
/* capability flags used with the uniform CD-ROM driver */
|
||||
#define CDC_CLOSE_TRAY 0x1 /* caddy systems _can't_ close */
|
||||
#define CDC_OPEN_TRAY 0x2 /* but _can_ eject. */
|
||||
#define CDC_LOCK 0x4 /* disable manual eject */
|
||||
#define CDC_SELECT_SPEED 0x8 /* programmable speed */
|
||||
#define CDC_SELECT_DISC 0x10 /* select disc from juke-box */
|
||||
#define CDC_MULTI_SESSION 0x20 /* read sessions>1 */
|
||||
#define CDC_MCN 0x40 /* Medium Catalog Number */
|
||||
#define CDC_MEDIA_CHANGED 0x80 /* media changed */
|
||||
#define CDC_PLAY_AUDIO 0x100 /* audio functions */
|
||||
#define CDC_RESET 0x200 /* hard reset device */
|
||||
#define CDC_DRIVE_STATUS 0x800 /* driver implements drive status */
|
||||
#define CDC_GENERIC_PACKET 0x1000 /* driver implements generic packets */
|
||||
#define CDC_CD_R 0x2000 /* drive is a CD-R */
|
||||
#define CDC_CD_RW 0x4000 /* drive is a CD-RW */
|
||||
#define CDC_DVD 0x8000 /* drive is a DVD */
|
||||
#define CDC_DVD_R 0x10000 /* drive can write DVD-R */
|
||||
#define CDC_DVD_RAM 0x20000 /* drive can write DVD-RAM */
|
||||
#define CDC_MO_DRIVE 0x40000 /* drive is an MO device */
|
||||
#define CDC_MRW 0x80000 /* drive can read MRW */
|
||||
#define CDC_MRW_W 0x100000 /* drive can write MRW */
|
||||
#define CDC_RAM 0x200000 /* ok to open for WRITE */
|
||||
|
||||
/* drive status possibilities returned by CDROM_DRIVE_STATUS ioctl */
|
||||
#define CDS_NO_INFO 0 /* if not implemented */
|
||||
#define CDS_NO_DISC 1
|
||||
#define CDS_TRAY_OPEN 2
|
||||
#define CDS_DRIVE_NOT_READY 3
|
||||
#define CDS_DISC_OK 4
|
||||
|
||||
/* return values for the CDROM_DISC_STATUS ioctl */
|
||||
/* can also return CDS_NO_[INFO|DISC], from above */
|
||||
#define CDS_AUDIO 100
|
||||
#define CDS_DATA_1 101
|
||||
#define CDS_DATA_2 102
|
||||
#define CDS_XA_2_1 103
|
||||
#define CDS_XA_2_2 104
|
||||
#define CDS_MIXED 105
|
||||
|
||||
/* User-configurable behavior options for the uniform CD-ROM driver */
|
||||
#define CDO_AUTO_CLOSE 0x1 /* close tray on first open() */
|
||||
#define CDO_AUTO_EJECT 0x2 /* open tray on last release() */
|
||||
#define CDO_USE_FFLAGS 0x4 /* use O_NONBLOCK information on open */
|
||||
#define CDO_LOCK 0x8 /* lock tray on open files */
|
||||
#define CDO_CHECK_TYPE 0x10 /* check type on open for data */
|
||||
|
||||
/* Special codes used when specifying changer slots. */
|
||||
#define CDSL_NONE (INT_MAX-1)
|
||||
#define CDSL_CURRENT INT_MAX
|
||||
|
||||
/* For partition based multisession access. IDE can handle 64 partitions
|
||||
* per drive - SCSI CD-ROM's use minors to differentiate between the
|
||||
* various drives, so we can't do multisessions the same way there.
|
||||
* Use the -o session=x option to mount on them.
|
||||
*/
|
||||
#define CD_PART_MAX 64
|
||||
#define CD_PART_MASK (CD_PART_MAX - 1)
|
||||
|
||||
/*********************************************************************
|
||||
* Generic Packet commands, MMC commands, and such
|
||||
*********************************************************************/
|
||||
|
||||
/* The generic packet command opcodes for CD/DVD Logical Units,
|
||||
* From Table 57 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */
|
||||
#define GPCMD_BLANK 0xa1
|
||||
#define GPCMD_CLOSE_TRACK 0x5b
|
||||
#define GPCMD_FLUSH_CACHE 0x35
|
||||
#define GPCMD_FORMAT_UNIT 0x04
|
||||
#define GPCMD_GET_CONFIGURATION 0x46
|
||||
#define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
|
||||
#define GPCMD_GET_PERFORMANCE 0xac
|
||||
#define GPCMD_INQUIRY 0x12
|
||||
#define GPCMD_LOAD_UNLOAD 0xa6
|
||||
#define GPCMD_MECHANISM_STATUS 0xbd
|
||||
#define GPCMD_MODE_SELECT_10 0x55
|
||||
#define GPCMD_MODE_SENSE_10 0x5a
|
||||
#define GPCMD_PAUSE_RESUME 0x4b
|
||||
#define GPCMD_PLAY_AUDIO_10 0x45
|
||||
#define GPCMD_PLAY_AUDIO_MSF 0x47
|
||||
#define GPCMD_PLAY_AUDIO_TI 0x48
|
||||
#define GPCMD_PLAY_CD 0xbc
|
||||
#define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
|
||||
#define GPCMD_READ_10 0x28
|
||||
#define GPCMD_READ_12 0xa8
|
||||
#define GPCMD_READ_BUFFER 0x3c
|
||||
#define GPCMD_READ_BUFFER_CAPACITY 0x5c
|
||||
#define GPCMD_READ_CDVD_CAPACITY 0x25
|
||||
#define GPCMD_READ_CD 0xbe
|
||||
#define GPCMD_READ_CD_MSF 0xb9
|
||||
#define GPCMD_READ_DISC_INFO 0x51
|
||||
#define GPCMD_READ_DVD_STRUCTURE 0xad
|
||||
#define GPCMD_READ_FORMAT_CAPACITIES 0x23
|
||||
#define GPCMD_READ_HEADER 0x44
|
||||
#define GPCMD_READ_TRACK_RZONE_INFO 0x52
|
||||
#define GPCMD_READ_SUBCHANNEL 0x42
|
||||
#define GPCMD_READ_TOC_PMA_ATIP 0x43
|
||||
#define GPCMD_REPAIR_RZONE_TRACK 0x58
|
||||
#define GPCMD_REPORT_KEY 0xa4
|
||||
#define GPCMD_REQUEST_SENSE 0x03
|
||||
#define GPCMD_RESERVE_RZONE_TRACK 0x53
|
||||
#define GPCMD_SEND_CUE_SHEET 0x5d
|
||||
#define GPCMD_SCAN 0xba
|
||||
#define GPCMD_SEEK 0x2b
|
||||
#define GPCMD_SEND_DVD_STRUCTURE 0xbf
|
||||
#define GPCMD_SEND_EVENT 0xa2
|
||||
#define GPCMD_SEND_KEY 0xa3
|
||||
#define GPCMD_SEND_OPC 0x54
|
||||
#define GPCMD_SET_READ_AHEAD 0xa7
|
||||
#define GPCMD_SET_STREAMING 0xb6
|
||||
#define GPCMD_START_STOP_UNIT 0x1b
|
||||
#define GPCMD_STOP_PLAY_SCAN 0x4e
|
||||
#define GPCMD_TEST_UNIT_READY 0x00
|
||||
#define GPCMD_VERIFY_10 0x2f
|
||||
#define GPCMD_WRITE_10 0x2a
|
||||
#define GPCMD_WRITE_12 0xaa
|
||||
#define GPCMD_WRITE_AND_VERIFY_10 0x2e
|
||||
#define GPCMD_WRITE_BUFFER 0x3b
|
||||
/* This is listed as optional in ATAPI 2.6, but is (curiously)
|
||||
* missing from Mt. Fuji, Table 57. It _is_ mentioned in Mt. Fuji
|
||||
* Table 377 as an MMC command for SCSi devices though... Most ATAPI
|
||||
* drives support it. */
|
||||
#define GPCMD_SET_SPEED 0xbb
|
||||
/* This seems to be a SCSI specific CD-ROM opcode
|
||||
* to play data at track/index */
|
||||
#define GPCMD_PLAYAUDIO_TI 0x48
|
||||
/*
|
||||
* From MS Media Status Notification Support Specification. For
|
||||
* older drives only.
|
||||
*/
|
||||
#define GPCMD_GET_MEDIA_STATUS 0xda
|
||||
|
||||
/* Mode page codes for mode sense/set */
|
||||
#define GPMODE_VENDOR_PAGE 0x00
|
||||
#define GPMODE_R_W_ERROR_PAGE 0x01
|
||||
#define GPMODE_WRITE_PARMS_PAGE 0x05
|
||||
#define GPMODE_WCACHING_PAGE 0x08
|
||||
#define GPMODE_AUDIO_CTL_PAGE 0x0e
|
||||
#define GPMODE_POWER_PAGE 0x1a
|
||||
#define GPMODE_FAULT_FAIL_PAGE 0x1c
|
||||
#define GPMODE_TO_PROTECT_PAGE 0x1d
|
||||
#define GPMODE_CAPABILITIES_PAGE 0x2a
|
||||
#define GPMODE_ALL_PAGES 0x3f
|
||||
/* Not in Mt. Fuji, but in ATAPI 2.6 -- deprecated now in favor
|
||||
* of MODE_SENSE_POWER_PAGE */
|
||||
#define GPMODE_CDROM_PAGE 0x0d
|
||||
|
||||
|
||||
|
||||
/* DVD struct types */
|
||||
#define DVD_STRUCT_PHYSICAL 0x00
|
||||
#define DVD_STRUCT_COPYRIGHT 0x01
|
||||
#define DVD_STRUCT_DISCKEY 0x02
|
||||
#define DVD_STRUCT_BCA 0x03
|
||||
#define DVD_STRUCT_MANUFACT 0x04
|
||||
|
||||
struct dvd_layer {
|
||||
__u8 book_version : 4;
|
||||
__u8 book_type : 4;
|
||||
__u8 min_rate : 4;
|
||||
__u8 disc_size : 4;
|
||||
__u8 layer_type : 4;
|
||||
__u8 track_path : 1;
|
||||
__u8 nlayers : 2;
|
||||
__u8 track_density : 4;
|
||||
__u8 linear_density : 4;
|
||||
__u8 bca : 1;
|
||||
__u32 start_sector;
|
||||
__u32 end_sector;
|
||||
__u32 end_sector_l0;
|
||||
};
|
||||
|
||||
#define DVD_LAYERS 4
|
||||
|
||||
struct dvd_physical {
|
||||
__u8 type;
|
||||
__u8 layer_num;
|
||||
struct dvd_layer layer[DVD_LAYERS];
|
||||
};
|
||||
|
||||
struct dvd_copyright {
|
||||
__u8 type;
|
||||
|
||||
__u8 layer_num;
|
||||
__u8 cpst;
|
||||
__u8 rmi;
|
||||
};
|
||||
|
||||
struct dvd_disckey {
|
||||
__u8 type;
|
||||
|
||||
unsigned agid : 2;
|
||||
__u8 value[2048];
|
||||
};
|
||||
|
||||
struct dvd_bca {
|
||||
__u8 type;
|
||||
|
||||
int len;
|
||||
__u8 value[188];
|
||||
};
|
||||
|
||||
struct dvd_manufact {
|
||||
__u8 type;
|
||||
|
||||
__u8 layer_num;
|
||||
int len;
|
||||
__u8 value[2048];
|
||||
};
|
||||
|
||||
typedef union {
|
||||
__u8 type;
|
||||
|
||||
struct dvd_physical physical;
|
||||
struct dvd_copyright copyright;
|
||||
struct dvd_disckey disckey;
|
||||
struct dvd_bca bca;
|
||||
struct dvd_manufact manufact;
|
||||
} dvd_struct;
|
||||
|
||||
/*
|
||||
* DVD authentication ioctl
|
||||
*/
|
||||
|
||||
/* Authentication states */
|
||||
#define DVD_LU_SEND_AGID 0
|
||||
#define DVD_HOST_SEND_CHALLENGE 1
|
||||
#define DVD_LU_SEND_KEY1 2
|
||||
#define DVD_LU_SEND_CHALLENGE 3
|
||||
#define DVD_HOST_SEND_KEY2 4
|
||||
|
||||
/* Termination states */
|
||||
#define DVD_AUTH_ESTABLISHED 5
|
||||
#define DVD_AUTH_FAILURE 6
|
||||
|
||||
/* Other functions */
|
||||
#define DVD_LU_SEND_TITLE_KEY 7
|
||||
#define DVD_LU_SEND_ASF 8
|
||||
#define DVD_INVALIDATE_AGID 9
|
||||
#define DVD_LU_SEND_RPC_STATE 10
|
||||
#define DVD_HOST_SEND_RPC_STATE 11
|
||||
|
||||
/* State data */
|
||||
typedef __u8 dvd_key[5]; /* 40-bit value, MSB is first elem. */
|
||||
typedef __u8 dvd_challenge[10]; /* 80-bit value, MSB is first elem. */
|
||||
|
||||
struct dvd_lu_send_agid {
|
||||
__u8 type;
|
||||
unsigned agid : 2;
|
||||
};
|
||||
|
||||
struct dvd_host_send_challenge {
|
||||
__u8 type;
|
||||
unsigned agid : 2;
|
||||
|
||||
dvd_challenge chal;
|
||||
};
|
||||
|
||||
struct dvd_send_key {
|
||||
__u8 type;
|
||||
unsigned agid : 2;
|
||||
|
||||
dvd_key key;
|
||||
};
|
||||
|
||||
struct dvd_lu_send_challenge {
|
||||
__u8 type;
|
||||
unsigned agid : 2;
|
||||
|
||||
dvd_challenge chal;
|
||||
};
|
||||
|
||||
#define DVD_CPM_NO_COPYRIGHT 0
|
||||
#define DVD_CPM_COPYRIGHTED 1
|
||||
|
||||
#define DVD_CP_SEC_NONE 0
|
||||
#define DVD_CP_SEC_EXIST 1
|
||||
|
||||
#define DVD_CGMS_UNRESTRICTED 0
|
||||
#define DVD_CGMS_SINGLE 2
|
||||
#define DVD_CGMS_RESTRICTED 3
|
||||
|
||||
struct dvd_lu_send_title_key {
|
||||
__u8 type;
|
||||
unsigned agid : 2;
|
||||
|
||||
dvd_key title_key;
|
||||
int lba;
|
||||
unsigned cpm : 1;
|
||||
unsigned cp_sec : 1;
|
||||
unsigned cgms : 2;
|
||||
};
|
||||
|
||||
struct dvd_lu_send_asf {
|
||||
__u8 type;
|
||||
unsigned agid : 2;
|
||||
|
||||
unsigned asf : 1;
|
||||
};
|
||||
|
||||
struct dvd_host_send_rpcstate {
|
||||
__u8 type;
|
||||
__u8 pdrc;
|
||||
};
|
||||
|
||||
struct dvd_lu_send_rpcstate {
|
||||
__u8 type : 2;
|
||||
__u8 vra : 3;
|
||||
__u8 ucca : 3;
|
||||
__u8 region_mask;
|
||||
__u8 rpc_scheme;
|
||||
};
|
||||
|
||||
typedef union {
|
||||
__u8 type;
|
||||
|
||||
struct dvd_lu_send_agid lsa;
|
||||
struct dvd_host_send_challenge hsc;
|
||||
struct dvd_send_key lsk;
|
||||
struct dvd_lu_send_challenge lsc;
|
||||
struct dvd_send_key hsk;
|
||||
struct dvd_lu_send_title_key lstk;
|
||||
struct dvd_lu_send_asf lsasf;
|
||||
struct dvd_host_send_rpcstate hrpcs;
|
||||
struct dvd_lu_send_rpcstate lrpcs;
|
||||
} dvd_authinfo;
|
||||
|
||||
struct request_sense {
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 valid : 1;
|
||||
__u8 error_code : 7;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 error_code : 7;
|
||||
__u8 valid : 1;
|
||||
#endif
|
||||
__u8 segment_number;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved1 : 2;
|
||||
__u8 ili : 1;
|
||||
__u8 reserved2 : 1;
|
||||
__u8 sense_key : 4;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 sense_key : 4;
|
||||
__u8 reserved2 : 1;
|
||||
__u8 ili : 1;
|
||||
__u8 reserved1 : 2;
|
||||
#endif
|
||||
__u8 information[4];
|
||||
__u8 add_sense_len;
|
||||
__u8 command_info[4];
|
||||
__u8 asc;
|
||||
__u8 ascq;
|
||||
__u8 fruc;
|
||||
__u8 sks[3];
|
||||
__u8 asb[46];
|
||||
};
|
||||
|
||||
/*
|
||||
* feature profile
|
||||
*/
|
||||
#define CDF_RWRT 0x0020 /* "Random Writable" */
|
||||
#define CDF_HWDM 0x0024 /* "Hardware Defect Management" */
|
||||
#define CDF_MRW 0x0028
|
||||
|
||||
/*
|
||||
* media status bits
|
||||
*/
|
||||
#define CDM_MRW_NOTMRW 0
|
||||
#define CDM_MRW_BGFORMAT_INACTIVE 1
|
||||
#define CDM_MRW_BGFORMAT_ACTIVE 2
|
||||
#define CDM_MRW_BGFORMAT_COMPLETE 3
|
||||
|
||||
/*
|
||||
* mrw address spaces
|
||||
*/
|
||||
#define MRW_LBA_DMA 0
|
||||
#define MRW_LBA_GAA 1
|
||||
|
||||
/*
|
||||
* mrw mode pages (first is deprecated) -- probed at init time and
|
||||
* cdi->mrw_mode_page is set
|
||||
*/
|
||||
#define MRW_MODE_PC_PRE1 0x2c
|
||||
#define MRW_MODE_PC 0x03
|
||||
|
||||
struct mrw_feature_desc {
|
||||
__be16 feature_code;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved1 : 2;
|
||||
__u8 feature_version : 4;
|
||||
__u8 persistent : 1;
|
||||
__u8 curr : 1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 curr : 1;
|
||||
__u8 persistent : 1;
|
||||
__u8 feature_version : 4;
|
||||
__u8 reserved1 : 2;
|
||||
#endif
|
||||
__u8 add_len;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved2 : 7;
|
||||
__u8 write : 1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 write : 1;
|
||||
__u8 reserved2 : 7;
|
||||
#endif
|
||||
__u8 reserved3;
|
||||
__u8 reserved4;
|
||||
__u8 reserved5;
|
||||
};
|
||||
|
||||
/* cf. mmc4r02g.pdf 5.3.10 Random Writable Feature (0020h) pg 197 of 635 */
|
||||
struct rwrt_feature_desc {
|
||||
__be16 feature_code;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved1 : 2;
|
||||
__u8 feature_version : 4;
|
||||
__u8 persistent : 1;
|
||||
__u8 curr : 1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 curr : 1;
|
||||
__u8 persistent : 1;
|
||||
__u8 feature_version : 4;
|
||||
__u8 reserved1 : 2;
|
||||
#endif
|
||||
__u8 add_len;
|
||||
__u32 last_lba;
|
||||
__u32 block_size;
|
||||
__u16 blocking;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved2 : 7;
|
||||
__u8 page_present : 1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 page_present : 1;
|
||||
__u8 reserved2 : 7;
|
||||
#endif
|
||||
__u8 reserved3;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
__be16 disc_information_length;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved1 : 3;
|
||||
__u8 erasable : 1;
|
||||
__u8 border_status : 2;
|
||||
__u8 disc_status : 2;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 disc_status : 2;
|
||||
__u8 border_status : 2;
|
||||
__u8 erasable : 1;
|
||||
__u8 reserved1 : 3;
|
||||
#else
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
__u8 n_first_track;
|
||||
__u8 n_sessions_lsb;
|
||||
__u8 first_track_lsb;
|
||||
__u8 last_track_lsb;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 did_v : 1;
|
||||
__u8 dbc_v : 1;
|
||||
__u8 uru : 1;
|
||||
__u8 reserved2 : 2;
|
||||
__u8 dbit : 1;
|
||||
__u8 mrw_status : 2;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 mrw_status : 2;
|
||||
__u8 dbit : 1;
|
||||
__u8 reserved2 : 2;
|
||||
__u8 uru : 1;
|
||||
__u8 dbc_v : 1;
|
||||
__u8 did_v : 1;
|
||||
#endif
|
||||
__u8 disc_type;
|
||||
__u8 n_sessions_msb;
|
||||
__u8 first_track_msb;
|
||||
__u8 last_track_msb;
|
||||
__u32 disc_id;
|
||||
__u32 lead_in;
|
||||
__u32 lead_out;
|
||||
__u8 disc_bar_code[8];
|
||||
__u8 reserved3;
|
||||
__u8 n_opc;
|
||||
} disc_information;
|
||||
|
||||
typedef struct {
|
||||
__be16 track_information_length;
|
||||
__u8 track_lsb;
|
||||
__u8 session_lsb;
|
||||
__u8 reserved1;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved2 : 2;
|
||||
__u8 damage : 1;
|
||||
__u8 copy : 1;
|
||||
__u8 track_mode : 4;
|
||||
__u8 rt : 1;
|
||||
__u8 blank : 1;
|
||||
__u8 packet : 1;
|
||||
__u8 fp : 1;
|
||||
__u8 data_mode : 4;
|
||||
__u8 reserved3 : 6;
|
||||
__u8 lra_v : 1;
|
||||
__u8 nwa_v : 1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 track_mode : 4;
|
||||
__u8 copy : 1;
|
||||
__u8 damage : 1;
|
||||
__u8 reserved2 : 2;
|
||||
__u8 data_mode : 4;
|
||||
__u8 fp : 1;
|
||||
__u8 packet : 1;
|
||||
__u8 blank : 1;
|
||||
__u8 rt : 1;
|
||||
__u8 nwa_v : 1;
|
||||
__u8 lra_v : 1;
|
||||
__u8 reserved3 : 6;
|
||||
#endif
|
||||
__be32 track_start;
|
||||
__be32 next_writable;
|
||||
__be32 free_blocks;
|
||||
__be32 fixed_packet_size;
|
||||
__be32 track_size;
|
||||
__be32 last_rec_address;
|
||||
} track_information;
|
||||
|
||||
struct feature_header {
|
||||
__u32 data_len;
|
||||
__u8 reserved1;
|
||||
__u8 reserved2;
|
||||
__u16 curr_profile;
|
||||
};
|
||||
|
||||
struct mode_page_header {
|
||||
__be16 mode_data_length;
|
||||
__u8 medium_type;
|
||||
__u8 reserved1;
|
||||
__u8 reserved2;
|
||||
__u8 reserved3;
|
||||
__be16 desc_length;
|
||||
};
|
||||
|
||||
/* removable medium feature descriptor */
|
||||
struct rm_feature_desc {
|
||||
__be16 feature_code;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 reserved1:2;
|
||||
__u8 feature_version:4;
|
||||
__u8 persistent:1;
|
||||
__u8 curr:1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 curr:1;
|
||||
__u8 persistent:1;
|
||||
__u8 feature_version:4;
|
||||
__u8 reserved1:2;
|
||||
#endif
|
||||
__u8 add_len;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 mech_type:3;
|
||||
__u8 load:1;
|
||||
__u8 eject:1;
|
||||
__u8 pvnt_jmpr:1;
|
||||
__u8 dbml:1;
|
||||
__u8 lock:1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 lock:1;
|
||||
__u8 dbml:1;
|
||||
__u8 pvnt_jmpr:1;
|
||||
__u8 eject:1;
|
||||
__u8 load:1;
|
||||
__u8 mech_type:3;
|
||||
#endif
|
||||
__u8 reserved2;
|
||||
__u8 reserved3;
|
||||
__u8 reserved4;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_CDROM_H */
|
||||
1944
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cec-funcs.h
Normal file
1944
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cec-funcs.h
Normal file
File diff suppressed because it is too large
Load Diff
1054
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cec.h
Normal file
1054
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cec.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,72 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1 WITH Linux-syscall-note */
|
||||
/* cgroupstats.h - exporting per-cgroup statistics
|
||||
*
|
||||
* Copyright IBM Corporation, 2007
|
||||
* Author Balbir Singh <balbir@linux.vnet.ibm.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2.1 of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it would be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CGROUPSTATS_H
|
||||
#define _LINUX_CGROUPSTATS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/taskstats.h>
|
||||
|
||||
/*
|
||||
* Data shared between user space and kernel space on a per cgroup
|
||||
* basis. This data is shared using taskstats.
|
||||
*
|
||||
* Most of these states are derived by looking at the task->state value
|
||||
* For the nr_io_wait state, a flag in the delay accounting structure
|
||||
* indicates that the task is waiting on IO
|
||||
*
|
||||
* Each member is aligned to a 8 byte boundary.
|
||||
*/
|
||||
struct cgroupstats {
|
||||
__u64 nr_sleeping; /* Number of tasks sleeping */
|
||||
__u64 nr_running; /* Number of tasks running */
|
||||
__u64 nr_stopped; /* Number of tasks in stopped state */
|
||||
__u64 nr_uninterruptible; /* Number of tasks in uninterruptible */
|
||||
/* state */
|
||||
__u64 nr_io_wait; /* Number of tasks waiting on IO */
|
||||
};
|
||||
|
||||
/*
|
||||
* Commands sent from userspace
|
||||
* Not versioned. New commands should only be inserted at the enum's end
|
||||
* prior to __CGROUPSTATS_CMD_MAX
|
||||
*/
|
||||
|
||||
enum {
|
||||
CGROUPSTATS_CMD_UNSPEC = __TASKSTATS_CMD_MAX, /* Reserved */
|
||||
CGROUPSTATS_CMD_GET, /* user->kernel request/get-response */
|
||||
CGROUPSTATS_CMD_NEW, /* kernel->user event */
|
||||
__CGROUPSTATS_CMD_MAX,
|
||||
};
|
||||
|
||||
#define CGROUPSTATS_CMD_MAX (__CGROUPSTATS_CMD_MAX - 1)
|
||||
|
||||
enum {
|
||||
CGROUPSTATS_TYPE_UNSPEC = 0, /* Reserved */
|
||||
CGROUPSTATS_TYPE_CGROUP_STATS, /* contains name + stats */
|
||||
__CGROUPSTATS_TYPE_MAX,
|
||||
};
|
||||
|
||||
#define CGROUPSTATS_TYPE_MAX (__CGROUPSTATS_TYPE_MAX - 1)
|
||||
|
||||
enum {
|
||||
CGROUPSTATS_CMD_ATTR_UNSPEC = 0,
|
||||
CGROUPSTATS_CMD_ATTR_FD,
|
||||
__CGROUPSTATS_CMD_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define CGROUPSTATS_CMD_ATTR_MAX (__CGROUPSTATS_CMD_ATTR_MAX - 1)
|
||||
|
||||
#endif /* _LINUX_CGROUPSTATS_H */
|
||||
169
ramdisk/initramfs/glibc_riscv64/usr/include/linux/chio.h
Normal file
169
ramdisk/initramfs/glibc_riscv64/usr/include/linux/chio.h
Normal file
@ -0,0 +1,169 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* ioctl interface for the scsi media changer driver
|
||||
*/
|
||||
|
||||
/* changer element types */
|
||||
#define CHET_MT 0 /* media transport element (robot) */
|
||||
#define CHET_ST 1 /* storage element (media slots) */
|
||||
#define CHET_IE 2 /* import/export element */
|
||||
#define CHET_DT 3 /* data transfer element (tape/cdrom/whatever) */
|
||||
#define CHET_V1 4 /* vendor specific #1 */
|
||||
#define CHET_V2 5 /* vendor specific #2 */
|
||||
#define CHET_V3 6 /* vendor specific #3 */
|
||||
#define CHET_V4 7 /* vendor specific #4 */
|
||||
|
||||
|
||||
/*
|
||||
* CHIOGPARAMS
|
||||
* query changer properties
|
||||
*
|
||||
* CHIOVGPARAMS
|
||||
* query vendor-specific element types
|
||||
*
|
||||
* accessing elements works by specifing type and unit of the element.
|
||||
* for example, storage elements are addressed with type = CHET_ST and
|
||||
* unit = 0 .. cp_nslots-1
|
||||
*
|
||||
*/
|
||||
struct changer_params {
|
||||
int cp_curpicker; /* current transport element */
|
||||
int cp_npickers; /* number of transport elements (CHET_MT) */
|
||||
int cp_nslots; /* number of storage elements (CHET_ST) */
|
||||
int cp_nportals; /* number of import/export elements (CHET_IE) */
|
||||
int cp_ndrives; /* number of data transfer elements (CHET_DT) */
|
||||
};
|
||||
struct changer_vendor_params {
|
||||
int cvp_n1; /* number of vendor specific elems (CHET_V1) */
|
||||
char cvp_label1[16];
|
||||
int cvp_n2; /* number of vendor specific elems (CHET_V2) */
|
||||
char cvp_label2[16];
|
||||
int cvp_n3; /* number of vendor specific elems (CHET_V3) */
|
||||
char cvp_label3[16];
|
||||
int cvp_n4; /* number of vendor specific elems (CHET_V4) */
|
||||
char cvp_label4[16];
|
||||
int reserved[8];
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* CHIOMOVE
|
||||
* move a medium from one element to another
|
||||
*/
|
||||
struct changer_move {
|
||||
int cm_fromtype; /* type/unit of source element */
|
||||
int cm_fromunit;
|
||||
int cm_totype; /* type/unit of destination element */
|
||||
int cm_tounit;
|
||||
int cm_flags;
|
||||
};
|
||||
#define CM_INVERT 1 /* flag: rotate media (for double-sided like MOD) */
|
||||
|
||||
|
||||
/*
|
||||
* CHIOEXCHANGE
|
||||
* move one medium from element #1 to element #2,
|
||||
* and another one from element #2 to element #3.
|
||||
* element #1 and #3 are allowed to be identical.
|
||||
*/
|
||||
struct changer_exchange {
|
||||
int ce_srctype; /* type/unit of element #1 */
|
||||
int ce_srcunit;
|
||||
int ce_fdsttype; /* type/unit of element #2 */
|
||||
int ce_fdstunit;
|
||||
int ce_sdsttype; /* type/unit of element #3 */
|
||||
int ce_sdstunit;
|
||||
int ce_flags;
|
||||
};
|
||||
#define CE_INVERT1 1
|
||||
#define CE_INVERT2 2
|
||||
|
||||
|
||||
/*
|
||||
* CHIOPOSITION
|
||||
* move the transport element (robot arm) to a specific element.
|
||||
*/
|
||||
struct changer_position {
|
||||
int cp_type;
|
||||
int cp_unit;
|
||||
int cp_flags;
|
||||
};
|
||||
#define CP_INVERT 1
|
||||
|
||||
|
||||
/*
|
||||
* CHIOGSTATUS
|
||||
* get element status for all elements of a specific type
|
||||
*/
|
||||
struct changer_element_status {
|
||||
int ces_type;
|
||||
unsigned char *ces_data;
|
||||
};
|
||||
#define CESTATUS_FULL 0x01 /* full */
|
||||
#define CESTATUS_IMPEXP 0x02 /* media was imported (inserted by sysop) */
|
||||
#define CESTATUS_EXCEPT 0x04 /* error condition */
|
||||
#define CESTATUS_ACCESS 0x08 /* access allowed */
|
||||
#define CESTATUS_EXENAB 0x10 /* element can export media */
|
||||
#define CESTATUS_INENAB 0x20 /* element can import media */
|
||||
|
||||
|
||||
/*
|
||||
* CHIOGELEM
|
||||
* get more detailed status information for a single element
|
||||
*/
|
||||
struct changer_get_element {
|
||||
int cge_type; /* type/unit */
|
||||
int cge_unit;
|
||||
int cge_status; /* status */
|
||||
int cge_errno; /* errno */
|
||||
int cge_srctype; /* source element of the last move/exchange */
|
||||
int cge_srcunit;
|
||||
int cge_id; /* scsi id (for data transfer elements) */
|
||||
int cge_lun; /* scsi lun (for data transfer elements) */
|
||||
char cge_pvoltag[36]; /* primary volume tag */
|
||||
char cge_avoltag[36]; /* alternate volume tag */
|
||||
int cge_flags;
|
||||
};
|
||||
/* flags */
|
||||
#define CGE_ERRNO 0x01 /* errno available */
|
||||
#define CGE_INVERT 0x02 /* media inverted */
|
||||
#define CGE_SRC 0x04 /* media src available */
|
||||
#define CGE_IDLUN 0x08 /* ID+LUN available */
|
||||
#define CGE_PVOLTAG 0x10 /* primary volume tag available */
|
||||
#define CGE_AVOLTAG 0x20 /* alternate volume tag available */
|
||||
|
||||
|
||||
/*
|
||||
* CHIOSVOLTAG
|
||||
* set volume tag
|
||||
*/
|
||||
struct changer_set_voltag {
|
||||
int csv_type; /* type/unit */
|
||||
int csv_unit;
|
||||
char csv_voltag[36]; /* volume tag */
|
||||
int csv_flags;
|
||||
};
|
||||
#define CSV_PVOLTAG 0x01 /* primary volume tag */
|
||||
#define CSV_AVOLTAG 0x02 /* alternate volume tag */
|
||||
#define CSV_CLEARTAG 0x04 /* clear volume tag */
|
||||
|
||||
/* ioctls */
|
||||
#define CHIOMOVE _IOW('c', 1,struct changer_move)
|
||||
#define CHIOEXCHANGE _IOW('c', 2,struct changer_exchange)
|
||||
#define CHIOPOSITION _IOW('c', 3,struct changer_position)
|
||||
#define CHIOGPICKER _IOR('c', 4,int) /* not impl. */
|
||||
#define CHIOSPICKER _IOW('c', 5,int) /* not impl. */
|
||||
#define CHIOGPARAMS _IOR('c', 6,struct changer_params)
|
||||
#define CHIOGSTATUS _IOW('c', 8,struct changer_element_status)
|
||||
#define CHIOGELEM _IOW('c',16,struct changer_get_element)
|
||||
#define CHIOINITELEM _IO('c',17)
|
||||
#define CHIOSVOLTAG _IOW('c',18,struct changer_set_voltag)
|
||||
#define CHIOGVPARAMS _IOR('c',19,struct changer_vendor_params)
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* End:
|
||||
*/
|
||||
@ -0,0 +1,28 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* include/uapi/linux/cifs/cifs_mount.h
|
||||
*
|
||||
* Author(s): Scott Lovenberg (scott.lovenberg@gmail.com)
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published
|
||||
* by the Free Software Foundation; either version 2.1 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
* the GNU Lesser General Public License for more details.
|
||||
*/
|
||||
#ifndef _CIFS_MOUNT_H
|
||||
#define _CIFS_MOUNT_H
|
||||
|
||||
/* Max string lengths for cifs mounting options. */
|
||||
#define CIFS_MAX_DOMAINNAME_LEN 256 /* max fully qualified domain name */
|
||||
#define CIFS_MAX_USERNAME_LEN 256 /* reasonable max for current servers */
|
||||
#define CIFS_MAX_PASSWORD_LEN 512 /* Windows max seems to be 256 wide chars */
|
||||
#define CIFS_MAX_SHARE_LEN 256 /* reasonable max share name length */
|
||||
#define CIFS_NI_MAXHOST 1024 /* max host name length (256 * 4 bytes) */
|
||||
|
||||
|
||||
#endif /* _CIFS_MOUNT_H */
|
||||
@ -0,0 +1,64 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _CM4000_H_
|
||||
#define _CM4000_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define MAX_ATR 33
|
||||
|
||||
#define CM4000_MAX_DEV 4
|
||||
|
||||
/* those two structures are passed via ioctl() from/to userspace. They are
|
||||
* used by existing userspace programs, so I kepth the awkward "bIFSD" naming
|
||||
* not to break compilation of userspace apps. -HW */
|
||||
|
||||
typedef struct atreq {
|
||||
__s32 atr_len;
|
||||
unsigned char atr[64];
|
||||
__s32 power_act;
|
||||
unsigned char bIFSD;
|
||||
unsigned char bIFSC;
|
||||
} atreq_t;
|
||||
|
||||
|
||||
/* what is particularly stupid in the original driver is the arch-dependent
|
||||
* member sizes. This leads to CONFIG_COMPAT breakage, since 32bit userspace
|
||||
* will lay out the structure members differently than the 64bit kernel.
|
||||
*
|
||||
* I've changed "ptsreq.protocol" from "unsigned long" to "__u32".
|
||||
* On 32bit this will make no difference. With 64bit kernels, it will make
|
||||
* 32bit apps work, too.
|
||||
*/
|
||||
|
||||
typedef struct ptsreq {
|
||||
__u32 protocol; /*T=0: 2^0, T=1: 2^1*/
|
||||
unsigned char flags;
|
||||
unsigned char pts1;
|
||||
unsigned char pts2;
|
||||
unsigned char pts3;
|
||||
} ptsreq_t;
|
||||
|
||||
#define CM_IOC_MAGIC 'c'
|
||||
#define CM_IOC_MAXNR 255
|
||||
|
||||
#define CM_IOCGSTATUS _IOR (CM_IOC_MAGIC, 0, unsigned char *)
|
||||
#define CM_IOCGATR _IOWR(CM_IOC_MAGIC, 1, atreq_t *)
|
||||
#define CM_IOCSPTS _IOW (CM_IOC_MAGIC, 2, ptsreq_t *)
|
||||
#define CM_IOCSRDR _IO (CM_IOC_MAGIC, 3)
|
||||
#define CM_IOCARDOFF _IO (CM_IOC_MAGIC, 4)
|
||||
|
||||
#define CM_IOSDBGLVL _IOW(CM_IOC_MAGIC, 250, int*)
|
||||
|
||||
/* card and device states */
|
||||
#define CM_CARD_INSERTED 0x01
|
||||
#define CM_CARD_POWERED 0x02
|
||||
#define CM_ATR_PRESENT 0x04
|
||||
#define CM_ATR_VALID 0x08
|
||||
#define CM_STATE_VALID 0x0f
|
||||
/* extra info only from CM4000 */
|
||||
#define CM_NO_READER 0x10
|
||||
#define CM_BAD_CARD 0x20
|
||||
|
||||
|
||||
#endif /* _CM4000_H_ */
|
||||
134
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cn_proc.h
Normal file
134
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cn_proc.h
Normal file
@ -0,0 +1,134 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1 WITH Linux-syscall-note */
|
||||
/*
|
||||
* cn_proc.h - process events connector
|
||||
*
|
||||
* Copyright (C) Matt Helsley, IBM Corp. 2005
|
||||
* Based on cn_fork.h by Nguyen Anh Quynh and Guillaume Thouvenin
|
||||
* Copyright (C) 2005 Nguyen Anh Quynh <aquynh@gmail.com>
|
||||
* Copyright (C) 2005 Guillaume Thouvenin <guillaume.thouvenin@bull.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2.1 of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it would be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*/
|
||||
|
||||
#ifndef CN_PROC_H
|
||||
#define CN_PROC_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Userspace sends this enum to register with the kernel that it is listening
|
||||
* for events on the connector.
|
||||
*/
|
||||
enum proc_cn_mcast_op {
|
||||
PROC_CN_MCAST_LISTEN = 1,
|
||||
PROC_CN_MCAST_IGNORE = 2
|
||||
};
|
||||
|
||||
/*
|
||||
* From the user's point of view, the process
|
||||
* ID is the thread group ID and thread ID is the internal
|
||||
* kernel "pid". So, fields are assigned as follow:
|
||||
*
|
||||
* In user space - In kernel space
|
||||
*
|
||||
* parent process ID = parent->tgid
|
||||
* parent thread ID = parent->pid
|
||||
* child process ID = child->tgid
|
||||
* child thread ID = child->pid
|
||||
*/
|
||||
|
||||
struct proc_event {
|
||||
enum what {
|
||||
/* Use successive bits so the enums can be used to record
|
||||
* sets of events as well
|
||||
*/
|
||||
PROC_EVENT_NONE = 0x00000000,
|
||||
PROC_EVENT_FORK = 0x00000001,
|
||||
PROC_EVENT_EXEC = 0x00000002,
|
||||
PROC_EVENT_UID = 0x00000004,
|
||||
PROC_EVENT_GID = 0x00000040,
|
||||
PROC_EVENT_SID = 0x00000080,
|
||||
PROC_EVENT_PTRACE = 0x00000100,
|
||||
PROC_EVENT_COMM = 0x00000200,
|
||||
/* "next" should be 0x00000400 */
|
||||
/* "last" is the last process event: exit,
|
||||
* while "next to last" is coredumping event */
|
||||
PROC_EVENT_COREDUMP = 0x40000000,
|
||||
PROC_EVENT_EXIT = 0x80000000
|
||||
} what;
|
||||
__u32 cpu;
|
||||
__u64 __attribute__((aligned(8))) timestamp_ns;
|
||||
/* Number of nano seconds since system boot */
|
||||
union { /* must be last field of proc_event struct */
|
||||
struct {
|
||||
__u32 err;
|
||||
} ack;
|
||||
|
||||
struct fork_proc_event {
|
||||
__kernel_pid_t parent_pid;
|
||||
__kernel_pid_t parent_tgid;
|
||||
__kernel_pid_t child_pid;
|
||||
__kernel_pid_t child_tgid;
|
||||
} fork;
|
||||
|
||||
struct exec_proc_event {
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
} exec;
|
||||
|
||||
struct id_proc_event {
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
union {
|
||||
__u32 ruid; /* task uid */
|
||||
__u32 rgid; /* task gid */
|
||||
} r;
|
||||
union {
|
||||
__u32 euid;
|
||||
__u32 egid;
|
||||
} e;
|
||||
} id;
|
||||
|
||||
struct sid_proc_event {
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
} sid;
|
||||
|
||||
struct ptrace_proc_event {
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
__kernel_pid_t tracer_pid;
|
||||
__kernel_pid_t tracer_tgid;
|
||||
} ptrace;
|
||||
|
||||
struct comm_proc_event {
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
char comm[16];
|
||||
} comm;
|
||||
|
||||
struct coredump_proc_event {
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
__kernel_pid_t parent_pid;
|
||||
__kernel_pid_t parent_tgid;
|
||||
} coredump;
|
||||
|
||||
struct exit_proc_event {
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
__u32 exit_code, exit_signal;
|
||||
__kernel_pid_t parent_pid;
|
||||
__kernel_pid_t parent_tgid;
|
||||
} exit;
|
||||
|
||||
} event_data;
|
||||
};
|
||||
|
||||
#endif /* CN_PROC_H */
|
||||
756
ramdisk/initramfs/glibc_riscv64/usr/include/linux/coda.h
Normal file
756
ramdisk/initramfs/glibc_riscv64/usr/include/linux/coda.h
Normal file
@ -0,0 +1,756 @@
|
||||
/*
|
||||
You may distribute this file under either of the two licenses that
|
||||
follow at your discretion.
|
||||
*/
|
||||
|
||||
/* BLURB lgpl
|
||||
|
||||
Coda File System
|
||||
Release 5
|
||||
|
||||
Copyright (c) 1987-1999 Carnegie Mellon University
|
||||
Additional copyrights listed below
|
||||
|
||||
This code is distributed "AS IS" without warranty of any kind under
|
||||
the terms of the GNU Library General Public Licence Version 2, as
|
||||
shown in the file LICENSE, or under the license shown below. The
|
||||
technical and financial contributors to Coda are listed in the file
|
||||
CREDITS.
|
||||
|
||||
Additional copyrights
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Coda: an Experimental Distributed File System
|
||||
Release 4.0
|
||||
|
||||
Copyright (c) 1987-1999 Carnegie Mellon University
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify and distribute this software and its
|
||||
documentation is hereby granted, provided that both the copyright
|
||||
notice and this permission notice appear in all copies of the
|
||||
software, derivative works or modified versions, and any portions
|
||||
thereof, and that both notices appear in supporting documentation, and
|
||||
that credit is given to Carnegie Mellon University in all documents
|
||||
and publicity pertaining to direct or indirect use of this code or its
|
||||
derivatives.
|
||||
|
||||
CODA IS AN EXPERIMENTAL SOFTWARE SYSTEM AND IS KNOWN TO HAVE BUGS,
|
||||
SOME OF WHICH MAY HAVE SERIOUS CONSEQUENCES. CARNEGIE MELLON ALLOWS
|
||||
FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION. CARNEGIE MELLON
|
||||
DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER
|
||||
RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE OR OF
|
||||
ANY DERIVATIVE WORK.
|
||||
|
||||
Carnegie Mellon encourages users of this software to return any
|
||||
improvements or extensions that they make, and to grant Carnegie
|
||||
Mellon the rights to redistribute these changes without encumbrance.
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* Based on cfs.h from Mach, but revamped for increased simplicity.
|
||||
* Linux modifications by
|
||||
* Peter Braam, Aug 1996
|
||||
*/
|
||||
|
||||
#ifndef _CODA_HEADER_
|
||||
#define _CODA_HEADER_
|
||||
|
||||
|
||||
/* Catch new _KERNEL defn for NetBSD and DJGPP/__CYGWIN32__ */
|
||||
#if defined(__NetBSD__) || \
|
||||
((defined(DJGPP) || defined(__CYGWIN32__)) && !defined(KERNEL))
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#ifndef CODA_MAXSYMLINKS
|
||||
#define CODA_MAXSYMLINKS 10
|
||||
#endif
|
||||
|
||||
#if defined(DJGPP) || defined(__CYGWIN32__)
|
||||
#ifdef KERNEL
|
||||
typedef unsigned long u_long;
|
||||
typedef unsigned int u_int;
|
||||
typedef unsigned short u_short;
|
||||
typedef u_long ino_t;
|
||||
typedef u_long dev_t;
|
||||
typedef void * caddr_t;
|
||||
#ifdef DOS
|
||||
typedef unsigned __int64 u_quad_t;
|
||||
#else
|
||||
typedef unsigned long long u_quad_t;
|
||||
#endif
|
||||
|
||||
#define __inline__
|
||||
|
||||
#else /* DJGPP but not KERNEL */
|
||||
#include <sys/time.h>
|
||||
typedef unsigned long long u_quad_t;
|
||||
#endif /* !KERNEL */
|
||||
#endif /* !DJGPP */
|
||||
|
||||
|
||||
#if defined(__linux__)
|
||||
#include <linux/time.h>
|
||||
#define cdev_t u_quad_t
|
||||
#if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
|
||||
#define _UQUAD_T_ 1
|
||||
typedef unsigned long long u_quad_t;
|
||||
#endif
|
||||
#else
|
||||
#define cdev_t dev_t
|
||||
#endif
|
||||
|
||||
#ifndef __BIT_TYPES_DEFINED__
|
||||
#define __BIT_TYPES_DEFINED__
|
||||
typedef signed char int8_t;
|
||||
typedef unsigned char u_int8_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned short u_int16_t;
|
||||
typedef int int32_t;
|
||||
typedef unsigned int u_int32_t;
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Cfs constants
|
||||
*/
|
||||
#define CODA_MAXNAMLEN 255
|
||||
#define CODA_MAXPATHLEN 1024
|
||||
#define CODA_MAXSYMLINK 10
|
||||
|
||||
/* these are Coda's version of O_RDONLY etc combinations
|
||||
* to deal with VFS open modes
|
||||
*/
|
||||
#define C_O_READ 0x001
|
||||
#define C_O_WRITE 0x002
|
||||
#define C_O_TRUNC 0x010
|
||||
#define C_O_EXCL 0x100
|
||||
#define C_O_CREAT 0x200
|
||||
|
||||
/* these are to find mode bits in Venus */
|
||||
#define C_M_READ 00400
|
||||
#define C_M_WRITE 00200
|
||||
|
||||
/* for access Venus will use */
|
||||
#define C_A_C_OK 8 /* Test for writing upon create. */
|
||||
#define C_A_R_OK 4 /* Test for read permission. */
|
||||
#define C_A_W_OK 2 /* Test for write permission. */
|
||||
#define C_A_X_OK 1 /* Test for execute permission. */
|
||||
#define C_A_F_OK 0 /* Test for existence. */
|
||||
|
||||
|
||||
|
||||
#ifndef _VENUS_DIRENT_T_
|
||||
#define _VENUS_DIRENT_T_ 1
|
||||
struct venus_dirent {
|
||||
u_int32_t d_fileno; /* file number of entry */
|
||||
u_int16_t d_reclen; /* length of this record */
|
||||
u_int8_t d_type; /* file type, see below */
|
||||
u_int8_t d_namlen; /* length of string in d_name */
|
||||
char d_name[CODA_MAXNAMLEN + 1];/* name must be no longer than this */
|
||||
};
|
||||
#undef DIRSIZ
|
||||
#define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + \
|
||||
(((dp)->d_namlen+1 + 3) &~ 3))
|
||||
|
||||
/*
|
||||
* File types
|
||||
*/
|
||||
#define CDT_UNKNOWN 0
|
||||
#define CDT_FIFO 1
|
||||
#define CDT_CHR 2
|
||||
#define CDT_DIR 4
|
||||
#define CDT_BLK 6
|
||||
#define CDT_REG 8
|
||||
#define CDT_LNK 10
|
||||
#define CDT_SOCK 12
|
||||
#define CDT_WHT 14
|
||||
|
||||
/*
|
||||
* Convert between stat structure types and directory types.
|
||||
*/
|
||||
#define IFTOCDT(mode) (((mode) & 0170000) >> 12)
|
||||
#define CDTTOIF(dirtype) ((dirtype) << 12)
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef _VUID_T_
|
||||
#define _VUID_T_
|
||||
typedef u_int32_t vuid_t;
|
||||
typedef u_int32_t vgid_t;
|
||||
#endif /*_VUID_T_ */
|
||||
|
||||
struct CodaFid {
|
||||
u_int32_t opaque[4];
|
||||
};
|
||||
|
||||
#define coda_f2i(fid)\
|
||||
(fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)
|
||||
|
||||
#ifndef _VENUS_VATTR_T_
|
||||
#define _VENUS_VATTR_T_
|
||||
/*
|
||||
* Vnode types. VNON means no type.
|
||||
*/
|
||||
enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };
|
||||
|
||||
struct coda_timespec {
|
||||
int64_t tv_sec; /* seconds */
|
||||
long tv_nsec; /* nanoseconds */
|
||||
};
|
||||
|
||||
struct coda_vattr {
|
||||
long va_type; /* vnode type (for create) */
|
||||
u_short va_mode; /* files access mode and type */
|
||||
short va_nlink; /* number of references to file */
|
||||
vuid_t va_uid; /* owner user id */
|
||||
vgid_t va_gid; /* owner group id */
|
||||
long va_fileid; /* file id */
|
||||
u_quad_t va_size; /* file size in bytes */
|
||||
long va_blocksize; /* blocksize preferred for i/o */
|
||||
struct coda_timespec va_atime; /* time of last access */
|
||||
struct coda_timespec va_mtime; /* time of last modification */
|
||||
struct coda_timespec va_ctime; /* time file changed */
|
||||
u_long va_gen; /* generation number of file */
|
||||
u_long va_flags; /* flags defined for file */
|
||||
cdev_t va_rdev; /* device special file represents */
|
||||
u_quad_t va_bytes; /* bytes of disk space held by file */
|
||||
u_quad_t va_filerev; /* file modification number */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/* structure used by CODA_STATFS for getting cache information from venus */
|
||||
struct coda_statfs {
|
||||
int32_t f_blocks;
|
||||
int32_t f_bfree;
|
||||
int32_t f_bavail;
|
||||
int32_t f_files;
|
||||
int32_t f_ffree;
|
||||
};
|
||||
|
||||
/*
|
||||
* Kernel <--> Venus communications.
|
||||
*/
|
||||
|
||||
#define CODA_ROOT 2
|
||||
#define CODA_OPEN_BY_FD 3
|
||||
#define CODA_OPEN 4
|
||||
#define CODA_CLOSE 5
|
||||
#define CODA_IOCTL 6
|
||||
#define CODA_GETATTR 7
|
||||
#define CODA_SETATTR 8
|
||||
#define CODA_ACCESS 9
|
||||
#define CODA_LOOKUP 10
|
||||
#define CODA_CREATE 11
|
||||
#define CODA_REMOVE 12
|
||||
#define CODA_LINK 13
|
||||
#define CODA_RENAME 14
|
||||
#define CODA_MKDIR 15
|
||||
#define CODA_RMDIR 16
|
||||
#define CODA_SYMLINK 18
|
||||
#define CODA_READLINK 19
|
||||
#define CODA_FSYNC 20
|
||||
#define CODA_VGET 22
|
||||
#define CODA_SIGNAL 23
|
||||
#define CODA_REPLACE 24 /* DOWNCALL */
|
||||
#define CODA_FLUSH 25 /* DOWNCALL */
|
||||
#define CODA_PURGEUSER 26 /* DOWNCALL */
|
||||
#define CODA_ZAPFILE 27 /* DOWNCALL */
|
||||
#define CODA_ZAPDIR 28 /* DOWNCALL */
|
||||
#define CODA_PURGEFID 30 /* DOWNCALL */
|
||||
#define CODA_OPEN_BY_PATH 31
|
||||
#define CODA_RESOLVE 32
|
||||
#define CODA_REINTEGRATE 33
|
||||
#define CODA_STATFS 34
|
||||
#define CODA_STORE 35
|
||||
#define CODA_RELEASE 36
|
||||
#define CODA_ACCESS_INTENT 37
|
||||
#define CODA_NCALLS 38
|
||||
|
||||
#define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
|
||||
|
||||
#define VC_MAXDATASIZE 8192
|
||||
#define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) +\
|
||||
VC_MAXDATASIZE
|
||||
|
||||
#define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
|
||||
|
||||
// CODA_KERNEL_VERSION 0 /* don't care about kernel version number */
|
||||
// CODA_KERNEL_VERSION 1 /* The old venus 4.6 compatible interface */
|
||||
// CODA_KERNEL_VERSION 2 /* venus_lookup gets an extra parameter */
|
||||
// CODA_KERNEL_VERSION 3 /* 128-bit file identifiers */
|
||||
// CODA_KERNEL_VERSION 4 /* 64-bit timespec */
|
||||
#define CODA_KERNEL_VERSION 5 /* access intent support */
|
||||
|
||||
/*
|
||||
* Venus <-> Coda RPC arguments
|
||||
*/
|
||||
struct coda_in_hdr {
|
||||
u_int32_t opcode;
|
||||
u_int32_t unique; /* Keep multiple outstanding msgs distinct */
|
||||
__kernel_pid_t pid;
|
||||
__kernel_pid_t pgid;
|
||||
vuid_t uid;
|
||||
};
|
||||
|
||||
/* Really important that opcode and unique are 1st two fields! */
|
||||
struct coda_out_hdr {
|
||||
u_int32_t opcode;
|
||||
u_int32_t unique;
|
||||
u_int32_t result;
|
||||
};
|
||||
|
||||
/* coda_root: NO_IN */
|
||||
struct coda_root_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid VFid;
|
||||
};
|
||||
|
||||
struct coda_root_in {
|
||||
struct coda_in_hdr in;
|
||||
};
|
||||
|
||||
/* coda_open: */
|
||||
struct coda_open_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_open_out {
|
||||
struct coda_out_hdr oh;
|
||||
cdev_t dev;
|
||||
ino_t inode;
|
||||
};
|
||||
|
||||
|
||||
/* coda_store: */
|
||||
struct coda_store_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_store_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_release: */
|
||||
struct coda_release_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_release_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_close: */
|
||||
struct coda_close_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_close_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_ioctl: */
|
||||
struct coda_ioctl_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int cmd;
|
||||
int len;
|
||||
int rwflag;
|
||||
char *data; /* Place holder for data. */
|
||||
};
|
||||
|
||||
struct coda_ioctl_out {
|
||||
struct coda_out_hdr oh;
|
||||
int len;
|
||||
caddr_t data; /* Place holder for data. */
|
||||
};
|
||||
|
||||
|
||||
/* coda_getattr: */
|
||||
struct coda_getattr_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
};
|
||||
|
||||
struct coda_getattr_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct coda_vattr attr;
|
||||
};
|
||||
|
||||
|
||||
/* coda_setattr: NO_OUT */
|
||||
struct coda_setattr_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
struct coda_vattr attr;
|
||||
};
|
||||
|
||||
struct coda_setattr_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_access: NO_OUT */
|
||||
struct coda_access_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_access_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
|
||||
/* lookup flags */
|
||||
#define CLU_CASE_SENSITIVE 0x01
|
||||
#define CLU_CASE_INSENSITIVE 0x02
|
||||
|
||||
/* coda_lookup: */
|
||||
struct coda_lookup_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int name; /* Place holder for data. */
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_lookup_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid VFid;
|
||||
int vtype;
|
||||
};
|
||||
|
||||
|
||||
/* coda_create: */
|
||||
struct coda_create_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
struct coda_vattr attr;
|
||||
int excl;
|
||||
int mode;
|
||||
int name; /* Place holder for data. */
|
||||
};
|
||||
|
||||
struct coda_create_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid VFid;
|
||||
struct coda_vattr attr;
|
||||
};
|
||||
|
||||
|
||||
/* coda_remove: NO_OUT */
|
||||
struct coda_remove_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int name; /* Place holder for data. */
|
||||
};
|
||||
|
||||
struct coda_remove_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_link: NO_OUT */
|
||||
struct coda_link_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid sourceFid; /* cnode to link *to* */
|
||||
struct CodaFid destFid; /* Directory in which to place link */
|
||||
int tname; /* Place holder for data. */
|
||||
};
|
||||
|
||||
struct coda_link_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
|
||||
/* coda_rename: NO_OUT */
|
||||
struct coda_rename_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid sourceFid;
|
||||
int srcname;
|
||||
struct CodaFid destFid;
|
||||
int destname;
|
||||
};
|
||||
|
||||
struct coda_rename_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_mkdir: */
|
||||
struct coda_mkdir_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
struct coda_vattr attr;
|
||||
int name; /* Place holder for data. */
|
||||
};
|
||||
|
||||
struct coda_mkdir_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid VFid;
|
||||
struct coda_vattr attr;
|
||||
};
|
||||
|
||||
|
||||
/* coda_rmdir: NO_OUT */
|
||||
struct coda_rmdir_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int name; /* Place holder for data. */
|
||||
};
|
||||
|
||||
struct coda_rmdir_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_symlink: NO_OUT */
|
||||
struct coda_symlink_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid; /* Directory to put symlink in */
|
||||
int srcname;
|
||||
struct coda_vattr attr;
|
||||
int tname;
|
||||
};
|
||||
|
||||
struct coda_symlink_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_readlink: */
|
||||
struct coda_readlink_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
};
|
||||
|
||||
struct coda_readlink_out {
|
||||
struct coda_out_hdr oh;
|
||||
int count;
|
||||
caddr_t data; /* Place holder for data. */
|
||||
};
|
||||
|
||||
|
||||
/* coda_fsync: NO_OUT */
|
||||
struct coda_fsync_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
};
|
||||
|
||||
struct coda_fsync_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/* coda_vget: */
|
||||
struct coda_vget_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
};
|
||||
|
||||
struct coda_vget_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid VFid;
|
||||
int vtype;
|
||||
};
|
||||
|
||||
|
||||
/* CODA_SIGNAL is out-of-band, doesn't need data. */
|
||||
/* CODA_INVALIDATE is a venus->kernel call */
|
||||
/* CODA_FLUSH is a venus->kernel call */
|
||||
|
||||
/* coda_purgeuser: */
|
||||
/* CODA_PURGEUSER is a venus->kernel call */
|
||||
struct coda_purgeuser_out {
|
||||
struct coda_out_hdr oh;
|
||||
vuid_t uid;
|
||||
};
|
||||
|
||||
/* coda_zapfile: */
|
||||
/* CODA_ZAPFILE is a venus->kernel call */
|
||||
struct coda_zapfile_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid CodaFid;
|
||||
};
|
||||
|
||||
/* coda_zapdir: */
|
||||
/* CODA_ZAPDIR is a venus->kernel call */
|
||||
struct coda_zapdir_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid CodaFid;
|
||||
};
|
||||
|
||||
/* coda_purgefid: */
|
||||
/* CODA_PURGEFID is a venus->kernel call */
|
||||
struct coda_purgefid_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid CodaFid;
|
||||
};
|
||||
|
||||
/* coda_replace: */
|
||||
/* CODA_REPLACE is a venus->kernel call */
|
||||
struct coda_replace_out { /* coda_replace is a venus->kernel call */
|
||||
struct coda_out_hdr oh;
|
||||
struct CodaFid NewFid;
|
||||
struct CodaFid OldFid;
|
||||
};
|
||||
|
||||
/* coda_open_by_fd: */
|
||||
struct coda_open_by_fd_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_open_by_fd_out {
|
||||
struct coda_out_hdr oh;
|
||||
int fd;
|
||||
|
||||
};
|
||||
|
||||
/* coda_open_by_path: */
|
||||
struct coda_open_by_path_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct coda_open_by_path_out {
|
||||
struct coda_out_hdr oh;
|
||||
int path;
|
||||
};
|
||||
|
||||
/* coda_statfs: NO_IN */
|
||||
struct coda_statfs_in {
|
||||
struct coda_in_hdr in;
|
||||
};
|
||||
|
||||
struct coda_statfs_out {
|
||||
struct coda_out_hdr oh;
|
||||
struct coda_statfs stat;
|
||||
};
|
||||
|
||||
#define CODA_ACCESS_TYPE_READ 1
|
||||
#define CODA_ACCESS_TYPE_WRITE 2
|
||||
#define CODA_ACCESS_TYPE_MMAP 3
|
||||
#define CODA_ACCESS_TYPE_READ_FINISH 4
|
||||
#define CODA_ACCESS_TYPE_WRITE_FINISH 5
|
||||
|
||||
/* coda_access_intent: NO_OUT */
|
||||
struct coda_access_intent_in {
|
||||
struct coda_in_hdr ih;
|
||||
struct CodaFid VFid;
|
||||
int count;
|
||||
int pos;
|
||||
int type;
|
||||
};
|
||||
|
||||
struct coda_access_intent_out {
|
||||
struct coda_out_hdr out;
|
||||
};
|
||||
|
||||
/*
|
||||
* Occasionally, we don't cache the fid returned by CODA_LOOKUP.
|
||||
* For instance, if the fid is inconsistent.
|
||||
* This case is handled by setting the top bit of the type result parameter.
|
||||
*/
|
||||
#define CODA_NOCACHE 0x80000000
|
||||
|
||||
union inputArgs {
|
||||
struct coda_in_hdr ih; /* NB: every struct below begins with an ih */
|
||||
struct coda_open_in coda_open;
|
||||
struct coda_store_in coda_store;
|
||||
struct coda_release_in coda_release;
|
||||
struct coda_close_in coda_close;
|
||||
struct coda_ioctl_in coda_ioctl;
|
||||
struct coda_getattr_in coda_getattr;
|
||||
struct coda_setattr_in coda_setattr;
|
||||
struct coda_access_in coda_access;
|
||||
struct coda_lookup_in coda_lookup;
|
||||
struct coda_create_in coda_create;
|
||||
struct coda_remove_in coda_remove;
|
||||
struct coda_link_in coda_link;
|
||||
struct coda_rename_in coda_rename;
|
||||
struct coda_mkdir_in coda_mkdir;
|
||||
struct coda_rmdir_in coda_rmdir;
|
||||
struct coda_symlink_in coda_symlink;
|
||||
struct coda_readlink_in coda_readlink;
|
||||
struct coda_fsync_in coda_fsync;
|
||||
struct coda_vget_in coda_vget;
|
||||
struct coda_open_by_fd_in coda_open_by_fd;
|
||||
struct coda_open_by_path_in coda_open_by_path;
|
||||
struct coda_statfs_in coda_statfs;
|
||||
struct coda_access_intent_in coda_access_intent;
|
||||
};
|
||||
|
||||
union outputArgs {
|
||||
struct coda_out_hdr oh; /* NB: every struct below begins with an oh */
|
||||
struct coda_root_out coda_root;
|
||||
struct coda_open_out coda_open;
|
||||
struct coda_ioctl_out coda_ioctl;
|
||||
struct coda_getattr_out coda_getattr;
|
||||
struct coda_lookup_out coda_lookup;
|
||||
struct coda_create_out coda_create;
|
||||
struct coda_mkdir_out coda_mkdir;
|
||||
struct coda_readlink_out coda_readlink;
|
||||
struct coda_vget_out coda_vget;
|
||||
struct coda_purgeuser_out coda_purgeuser;
|
||||
struct coda_zapfile_out coda_zapfile;
|
||||
struct coda_zapdir_out coda_zapdir;
|
||||
struct coda_purgefid_out coda_purgefid;
|
||||
struct coda_replace_out coda_replace;
|
||||
struct coda_open_by_fd_out coda_open_by_fd;
|
||||
struct coda_open_by_path_out coda_open_by_path;
|
||||
struct coda_statfs_out coda_statfs;
|
||||
};
|
||||
|
||||
union coda_downcalls {
|
||||
/* CODA_INVALIDATE is a venus->kernel call */
|
||||
/* CODA_FLUSH is a venus->kernel call */
|
||||
struct coda_purgeuser_out purgeuser;
|
||||
struct coda_zapfile_out zapfile;
|
||||
struct coda_zapdir_out zapdir;
|
||||
struct coda_purgefid_out purgefid;
|
||||
struct coda_replace_out replace;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Used for identifying usage of "Control" and pioctls
|
||||
*/
|
||||
|
||||
#define PIOCPARM_MASK 0x0000ffff
|
||||
struct ViceIoctl {
|
||||
void *in; /* Data to be transferred in */
|
||||
void *out; /* Data to be transferred out */
|
||||
u_short in_size; /* Size of input buffer <= 2K */
|
||||
u_short out_size; /* Maximum size of output buffer, <= 2K */
|
||||
};
|
||||
|
||||
struct PioctlData {
|
||||
const char *path;
|
||||
int follow;
|
||||
struct ViceIoctl vi;
|
||||
};
|
||||
|
||||
#define CODA_CONTROL ".CONTROL"
|
||||
#define CODA_CONTROLLEN 8
|
||||
#define CTL_INO -1
|
||||
|
||||
/* Data passed to mount */
|
||||
|
||||
#define CODA_MOUNT_VERSION 1
|
||||
|
||||
struct coda_mount_data {
|
||||
int version;
|
||||
int fd; /* Opened device */
|
||||
};
|
||||
|
||||
#endif /* _CODA_HEADER_ */
|
||||
357
ramdisk/initramfs/glibc_riscv64/usr/include/linux/coff.h
Normal file
357
ramdisk/initramfs/glibc_riscv64/usr/include/linux/coff.h
Normal file
@ -0,0 +1,357 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* This file is derived from the GAS 2.1.4 assembler control file.
|
||||
The GAS product is under the GNU General Public License, version 2 or later.
|
||||
As such, this file is also under that license.
|
||||
|
||||
If the file format changes in the COFF object, this file should be
|
||||
subsequently updated to reflect the changes.
|
||||
|
||||
The actual loader module only uses a few of these structures. The full
|
||||
set is documented here because I received the full set. If you wish
|
||||
more information about COFF, then O'Reilly has a very excellent book.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_COFF_H
|
||||
#define _LINUX_COFF_H
|
||||
|
||||
#define E_SYMNMLEN 8 /* Number of characters in a symbol name */
|
||||
#define E_FILNMLEN 14 /* Number of characters in a file name */
|
||||
#define E_DIMNUM 4 /* Number of array dimensions in auxiliary entry */
|
||||
|
||||
/*
|
||||
* These defines are byte order independent. There is no alignment of fields
|
||||
* permitted in the structures. Therefore they are declared as characters
|
||||
* and the values loaded from the character positions. It also makes it
|
||||
* nice to have it "endian" independent.
|
||||
*/
|
||||
|
||||
/* Load a short int from the following tables with little-endian formats */
|
||||
#define COFF_SHORT_L(ps) ((short)(((unsigned short)((unsigned char)ps[1])<<8)|\
|
||||
((unsigned short)((unsigned char)ps[0]))))
|
||||
|
||||
/* Load a long int from the following tables with little-endian formats */
|
||||
#define COFF_LONG_L(ps) (((long)(((unsigned long)((unsigned char)ps[3])<<24) |\
|
||||
((unsigned long)((unsigned char)ps[2])<<16) |\
|
||||
((unsigned long)((unsigned char)ps[1])<<8) |\
|
||||
((unsigned long)((unsigned char)ps[0])))))
|
||||
|
||||
/* Load a short int from the following tables with big-endian formats */
|
||||
#define COFF_SHORT_H(ps) ((short)(((unsigned short)((unsigned char)ps[0])<<8)|\
|
||||
((unsigned short)((unsigned char)ps[1]))))
|
||||
|
||||
/* Load a long int from the following tables with big-endian formats */
|
||||
#define COFF_LONG_H(ps) (((long)(((unsigned long)((unsigned char)ps[0])<<24) |\
|
||||
((unsigned long)((unsigned char)ps[1])<<16) |\
|
||||
((unsigned long)((unsigned char)ps[2])<<8) |\
|
||||
((unsigned long)((unsigned char)ps[3])))))
|
||||
|
||||
/* These may be overridden later by brain dead implementations which generate
|
||||
a big-endian header with little-endian data. In that case, generate a
|
||||
replacement macro which tests a flag and uses either of the two above
|
||||
as appropriate. */
|
||||
|
||||
#define COFF_LONG(v) COFF_LONG_L(v)
|
||||
#define COFF_SHORT(v) COFF_SHORT_L(v)
|
||||
|
||||
/*** coff information for Intel 386/486. */
|
||||
|
||||
/********************** FILE HEADER **********************/
|
||||
|
||||
struct COFF_filehdr {
|
||||
char f_magic[2]; /* magic number */
|
||||
char f_nscns[2]; /* number of sections */
|
||||
char f_timdat[4]; /* time & date stamp */
|
||||
char f_symptr[4]; /* file pointer to symtab */
|
||||
char f_nsyms[4]; /* number of symtab entries */
|
||||
char f_opthdr[2]; /* sizeof(optional hdr) */
|
||||
char f_flags[2]; /* flags */
|
||||
};
|
||||
|
||||
/*
|
||||
* Bits for f_flags:
|
||||
*
|
||||
* F_RELFLG relocation info stripped from file
|
||||
* F_EXEC file is executable (i.e. no unresolved external
|
||||
* references)
|
||||
* F_LNNO line numbers stripped from file
|
||||
* F_LSYMS local symbols stripped from file
|
||||
* F_MINMAL this is a minimal object file (".m") output of fextract
|
||||
* F_UPDATE this is a fully bound update file, output of ogen
|
||||
* F_SWABD this file has had its bytes swabbed (in names)
|
||||
* F_AR16WR this file has the byte ordering of an AR16WR
|
||||
* (e.g. 11/70) machine
|
||||
* F_AR32WR this file has the byte ordering of an AR32WR machine
|
||||
* (e.g. vax and iNTEL 386)
|
||||
* F_AR32W this file has the byte ordering of an AR32W machine
|
||||
* (e.g. 3b,maxi)
|
||||
* F_PATCH file contains "patch" list in optional header
|
||||
* F_NODF (minimal file only) no decision functions for
|
||||
* replaced functions
|
||||
*/
|
||||
|
||||
#define COFF_F_RELFLG 0000001
|
||||
#define COFF_F_EXEC 0000002
|
||||
#define COFF_F_LNNO 0000004
|
||||
#define COFF_F_LSYMS 0000010
|
||||
#define COFF_F_MINMAL 0000020
|
||||
#define COFF_F_UPDATE 0000040
|
||||
#define COFF_F_SWABD 0000100
|
||||
#define COFF_F_AR16WR 0000200
|
||||
#define COFF_F_AR32WR 0000400
|
||||
#define COFF_F_AR32W 0001000
|
||||
#define COFF_F_PATCH 0002000
|
||||
#define COFF_F_NODF 0002000
|
||||
|
||||
#define COFF_I386MAGIC 0x14c /* Linux's system */
|
||||
|
||||
#if 0 /* Perhaps, someday, these formats may be used. */
|
||||
#define COFF_I386PTXMAGIC 0x154
|
||||
#define COFF_I386AIXMAGIC 0x175 /* IBM's AIX system */
|
||||
#define COFF_I386BADMAG(x) ((COFF_SHORT((x).f_magic) != COFF_I386MAGIC) \
|
||||
&& COFF_SHORT((x).f_magic) != COFF_I386PTXMAGIC \
|
||||
&& COFF_SHORT((x).f_magic) != COFF_I386AIXMAGIC)
|
||||
#else
|
||||
#define COFF_I386BADMAG(x) (COFF_SHORT((x).f_magic) != COFF_I386MAGIC)
|
||||
#endif
|
||||
|
||||
#define COFF_FILHDR struct COFF_filehdr
|
||||
#define COFF_FILHSZ sizeof(COFF_FILHDR)
|
||||
|
||||
/********************** AOUT "OPTIONAL HEADER" **********************/
|
||||
|
||||
/* Linux COFF must have this "optional" header. Standard COFF has no entry
|
||||
location for the "entry" point. They normally would start with the first
|
||||
location of the .text section. This is not a good idea for linux. So,
|
||||
the use of this "optional" header is not optional. It is required.
|
||||
|
||||
Do not be tempted to assume that the size of the optional header is
|
||||
a constant and simply index the next byte by the size of this structure.
|
||||
Use the 'f_opthdr' field in the main coff header for the size of the
|
||||
structure actually written to the file!!
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char magic[2]; /* type of file */
|
||||
char vstamp[2]; /* version stamp */
|
||||
char tsize[4]; /* text size in bytes, padded to FW bdry */
|
||||
char dsize[4]; /* initialized data " " */
|
||||
char bsize[4]; /* uninitialized data " " */
|
||||
char entry[4]; /* entry pt. */
|
||||
char text_start[4]; /* base of text used for this file */
|
||||
char data_start[4]; /* base of data used for this file */
|
||||
}
|
||||
COFF_AOUTHDR;
|
||||
|
||||
#define COFF_AOUTSZ (sizeof(COFF_AOUTHDR))
|
||||
|
||||
#define COFF_STMAGIC 0401
|
||||
#define COFF_OMAGIC 0404
|
||||
#define COFF_JMAGIC 0407 /* dirty text and data image, can't share */
|
||||
#define COFF_DMAGIC 0410 /* dirty text segment, data aligned */
|
||||
#define COFF_ZMAGIC 0413 /* The proper magic number for executables */
|
||||
#define COFF_SHMAGIC 0443 /* shared library header */
|
||||
|
||||
/********************** SECTION HEADER **********************/
|
||||
|
||||
struct COFF_scnhdr {
|
||||
char s_name[8]; /* section name */
|
||||
char s_paddr[4]; /* physical address, aliased s_nlib */
|
||||
char s_vaddr[4]; /* virtual address */
|
||||
char s_size[4]; /* section size */
|
||||
char s_scnptr[4]; /* file ptr to raw data for section */
|
||||
char s_relptr[4]; /* file ptr to relocation */
|
||||
char s_lnnoptr[4]; /* file ptr to line numbers */
|
||||
char s_nreloc[2]; /* number of relocation entries */
|
||||
char s_nlnno[2]; /* number of line number entries */
|
||||
char s_flags[4]; /* flags */
|
||||
};
|
||||
|
||||
#define COFF_SCNHDR struct COFF_scnhdr
|
||||
#define COFF_SCNHSZ sizeof(COFF_SCNHDR)
|
||||
|
||||
/*
|
||||
* names of "special" sections
|
||||
*/
|
||||
|
||||
#define COFF_TEXT ".text"
|
||||
#define COFF_DATA ".data"
|
||||
#define COFF_BSS ".bss"
|
||||
#define COFF_COMMENT ".comment"
|
||||
#define COFF_LIB ".lib"
|
||||
|
||||
#define COFF_SECT_TEXT 0 /* Section for instruction code */
|
||||
#define COFF_SECT_DATA 1 /* Section for initialized globals */
|
||||
#define COFF_SECT_BSS 2 /* Section for un-initialized globals */
|
||||
#define COFF_SECT_REQD 3 /* Minimum number of sections for good file */
|
||||
|
||||
#define COFF_STYP_REG 0x00 /* regular segment */
|
||||
#define COFF_STYP_DSECT 0x01 /* dummy segment */
|
||||
#define COFF_STYP_NOLOAD 0x02 /* no-load segment */
|
||||
#define COFF_STYP_GROUP 0x04 /* group segment */
|
||||
#define COFF_STYP_PAD 0x08 /* .pad segment */
|
||||
#define COFF_STYP_COPY 0x10 /* copy section */
|
||||
#define COFF_STYP_TEXT 0x20 /* .text segment */
|
||||
#define COFF_STYP_DATA 0x40 /* .data segment */
|
||||
#define COFF_STYP_BSS 0x80 /* .bss segment */
|
||||
#define COFF_STYP_INFO 0x200 /* .comment section */
|
||||
#define COFF_STYP_OVER 0x400 /* overlay section */
|
||||
#define COFF_STYP_LIB 0x800 /* library section */
|
||||
|
||||
/*
|
||||
* Shared libraries have the following section header in the data field for
|
||||
* each library.
|
||||
*/
|
||||
|
||||
struct COFF_slib {
|
||||
char sl_entsz[4]; /* Size of this entry */
|
||||
char sl_pathndx[4]; /* size of the header field */
|
||||
};
|
||||
|
||||
#define COFF_SLIBHD struct COFF_slib
|
||||
#define COFF_SLIBSZ sizeof(COFF_SLIBHD)
|
||||
|
||||
/********************** LINE NUMBERS **********************/
|
||||
|
||||
/* 1 line number entry for every "breakpointable" source line in a section.
|
||||
* Line numbers are grouped on a per function basis; first entry in a function
|
||||
* grouping will have l_lnno = 0 and in place of physical address will be the
|
||||
* symbol table index of the function name.
|
||||
*/
|
||||
|
||||
struct COFF_lineno {
|
||||
union {
|
||||
char l_symndx[4]; /* function name symbol index, iff l_lnno == 0*/
|
||||
char l_paddr[4]; /* (physical) address of line number */
|
||||
} l_addr;
|
||||
char l_lnno[2]; /* line number */
|
||||
};
|
||||
|
||||
#define COFF_LINENO struct COFF_lineno
|
||||
#define COFF_LINESZ 6
|
||||
|
||||
/********************** SYMBOLS **********************/
|
||||
|
||||
#define COFF_E_SYMNMLEN 8 /* # characters in a short symbol name */
|
||||
#define COFF_E_FILNMLEN 14 /* # characters in a file name */
|
||||
#define COFF_E_DIMNUM 4 /* # array dimensions in auxiliary entry */
|
||||
|
||||
/*
|
||||
* All symbols and sections have the following definition
|
||||
*/
|
||||
|
||||
struct COFF_syment
|
||||
{
|
||||
union {
|
||||
char e_name[E_SYMNMLEN]; /* Symbol name (first 8 characters) */
|
||||
struct {
|
||||
char e_zeroes[4]; /* Leading zeros */
|
||||
char e_offset[4]; /* Offset if this is a header section */
|
||||
} e;
|
||||
} e;
|
||||
|
||||
char e_value[4]; /* Value (address) of the segment */
|
||||
char e_scnum[2]; /* Section number */
|
||||
char e_type[2]; /* Type of section */
|
||||
char e_sclass[1]; /* Loader class */
|
||||
char e_numaux[1]; /* Number of auxiliary entries which follow */
|
||||
};
|
||||
|
||||
#define COFF_N_BTMASK (0xf) /* Mask for important class bits */
|
||||
#define COFF_N_TMASK (0x30) /* Mask for important type bits */
|
||||
#define COFF_N_BTSHFT (4) /* # bits to shift class field */
|
||||
#define COFF_N_TSHIFT (2) /* # bits to shift type field */
|
||||
|
||||
/*
|
||||
* Auxiliary entries because the main table is too limiting.
|
||||
*/
|
||||
|
||||
union COFF_auxent {
|
||||
|
||||
/*
|
||||
* Debugger information
|
||||
*/
|
||||
|
||||
struct {
|
||||
char x_tagndx[4]; /* str, un, or enum tag indx */
|
||||
union {
|
||||
struct {
|
||||
char x_lnno[2]; /* declaration line number */
|
||||
char x_size[2]; /* str/union/array size */
|
||||
} x_lnsz;
|
||||
char x_fsize[4]; /* size of function */
|
||||
} x_misc;
|
||||
|
||||
union {
|
||||
struct { /* if ISFCN, tag, or .bb */
|
||||
char x_lnnoptr[4]; /* ptr to fcn line # */
|
||||
char x_endndx[4]; /* entry ndx past block end */
|
||||
} x_fcn;
|
||||
|
||||
struct { /* if ISARY, up to 4 dimen. */
|
||||
char x_dimen[E_DIMNUM][2];
|
||||
} x_ary;
|
||||
} x_fcnary;
|
||||
|
||||
char x_tvndx[2]; /* tv index */
|
||||
} x_sym;
|
||||
|
||||
/*
|
||||
* Source file names (debugger information)
|
||||
*/
|
||||
|
||||
union {
|
||||
char x_fname[E_FILNMLEN];
|
||||
struct {
|
||||
char x_zeroes[4];
|
||||
char x_offset[4];
|
||||
} x_n;
|
||||
} x_file;
|
||||
|
||||
/*
|
||||
* Section information
|
||||
*/
|
||||
|
||||
struct {
|
||||
char x_scnlen[4]; /* section length */
|
||||
char x_nreloc[2]; /* # relocation entries */
|
||||
char x_nlinno[2]; /* # line numbers */
|
||||
} x_scn;
|
||||
|
||||
/*
|
||||
* Transfer vector (branch table)
|
||||
*/
|
||||
|
||||
struct {
|
||||
char x_tvfill[4]; /* tv fill value */
|
||||
char x_tvlen[2]; /* length of .tv */
|
||||
char x_tvran[2][2]; /* tv range */
|
||||
} x_tv; /* info about .tv section (in auxent of symbol .tv)) */
|
||||
};
|
||||
|
||||
#define COFF_SYMENT struct COFF_syment
|
||||
#define COFF_SYMESZ 18
|
||||
#define COFF_AUXENT union COFF_auxent
|
||||
#define COFF_AUXESZ 18
|
||||
|
||||
#define COFF_ETEXT "etext"
|
||||
|
||||
/********************** RELOCATION DIRECTIVES **********************/
|
||||
|
||||
struct COFF_reloc {
|
||||
char r_vaddr[4]; /* Virtual address of item */
|
||||
char r_symndx[4]; /* Symbol index in the symtab */
|
||||
char r_type[2]; /* Relocation type */
|
||||
};
|
||||
|
||||
#define COFF_RELOC struct COFF_reloc
|
||||
#define COFF_RELSZ 10
|
||||
|
||||
#define COFF_DEF_DATA_SECTION_ALIGNMENT 4
|
||||
#define COFF_DEF_BSS_SECTION_ALIGNMENT 4
|
||||
#define COFF_DEF_TEXT_SECTION_ALIGNMENT 4
|
||||
|
||||
/* For new sections we haven't heard of before */
|
||||
#define COFF_DEF_SECTION_ALIGNMENT 4
|
||||
|
||||
#endif /* _LINUX_COFF_H */
|
||||
@ -0,0 +1,81 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* connector.h
|
||||
*
|
||||
* 2004-2005 Copyright (c) Evgeniy Polyakov <zbr@ioremap.net>
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __CONNECTOR_H
|
||||
#define __CONNECTOR_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Process Events connector unique ids -- used for message routing
|
||||
*/
|
||||
#define CN_IDX_PROC 0x1
|
||||
#define CN_VAL_PROC 0x1
|
||||
#define CN_IDX_CIFS 0x2
|
||||
#define CN_VAL_CIFS 0x1
|
||||
#define CN_W1_IDX 0x3 /* w1 communication */
|
||||
#define CN_W1_VAL 0x1
|
||||
#define CN_IDX_V86D 0x4
|
||||
#define CN_VAL_V86D_UVESAFB 0x1
|
||||
#define CN_IDX_BB 0x5 /* BlackBoard, from the TSP GPL sampling framework */
|
||||
#define CN_DST_IDX 0x6
|
||||
#define CN_DST_VAL 0x1
|
||||
#define CN_IDX_DM 0x7 /* Device Mapper */
|
||||
#define CN_VAL_DM_USERSPACE_LOG 0x1
|
||||
#define CN_IDX_DRBD 0x8
|
||||
#define CN_VAL_DRBD 0x1
|
||||
#define CN_KVP_IDX 0x9 /* HyperV KVP */
|
||||
#define CN_KVP_VAL 0x1 /* queries from the kernel */
|
||||
#define CN_VSS_IDX 0xA /* HyperV VSS */
|
||||
#define CN_VSS_VAL 0x1 /* queries from the kernel */
|
||||
|
||||
|
||||
#define CN_NETLINK_USERS 11 /* Highest index + 1 */
|
||||
|
||||
/*
|
||||
* Maximum connector's message size.
|
||||
*/
|
||||
#define CONNECTOR_MAX_MSG_SIZE 16384
|
||||
|
||||
/*
|
||||
* idx and val are unique identifiers which
|
||||
* are used for message routing and
|
||||
* must be registered in connector.h for in-kernel usage.
|
||||
*/
|
||||
|
||||
struct cb_id {
|
||||
__u32 idx;
|
||||
__u32 val;
|
||||
};
|
||||
|
||||
struct cn_msg {
|
||||
struct cb_id id;
|
||||
|
||||
__u32 seq;
|
||||
__u32 ack;
|
||||
|
||||
__u16 len; /* Length of the following data */
|
||||
__u16 flags;
|
||||
__u8 data[0];
|
||||
};
|
||||
|
||||
#endif /* __CONNECTOR_H */
|
||||
31
ramdisk/initramfs/glibc_riscv64/usr/include/linux/const.h
Normal file
31
ramdisk/initramfs/glibc_riscv64/usr/include/linux/const.h
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* const.h: Macros for dealing with constants. */
|
||||
|
||||
#ifndef _LINUX_CONST_H
|
||||
#define _LINUX_CONST_H
|
||||
|
||||
/* Some constant macros are used in both assembler and
|
||||
* C code. Therefore we cannot annotate them always with
|
||||
* 'UL' and other type specifiers unilaterally. We
|
||||
* use the following macros to deal with this.
|
||||
*
|
||||
* Similarly, _AT() will cast an expression with a type in C, but
|
||||
* leave it unchanged in asm.
|
||||
*/
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
#define _AC(X,Y) X
|
||||
#define _AT(T,X) X
|
||||
#else
|
||||
#define __AC(X,Y) (X##Y)
|
||||
#define _AC(X,Y) __AC(X,Y)
|
||||
#define _AT(T,X) ((T)(X))
|
||||
#endif
|
||||
|
||||
#define _UL(x) (_AC(x, UL))
|
||||
#define _ULL(x) (_AC(x, ULL))
|
||||
|
||||
#define _BITUL(x) (_UL(1) << (x))
|
||||
#define _BITULL(x) (_ULL(1) << (x))
|
||||
|
||||
#endif /* _LINUX_CONST_H */
|
||||
@ -0,0 +1,24 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __UAPI_CORESIGHT_STM_H_
|
||||
#define __UAPI_CORESIGHT_STM_H_
|
||||
|
||||
#include <linux/const.h>
|
||||
|
||||
#define STM_FLAG_TIMESTAMPED _BITUL(3)
|
||||
#define STM_FLAG_GUARANTEED _BITUL(7)
|
||||
|
||||
/*
|
||||
* The CoreSight STM supports guaranteed and invariant timing
|
||||
* transactions. Guaranteed transactions are guaranteed to be
|
||||
* traced, this might involve stalling the bus or system to
|
||||
* ensure the transaction is accepted by the STM. While invariant
|
||||
* timing transactions are not guaranteed to be traced, they
|
||||
* will take an invariant amount of time regardless of the
|
||||
* state of the STM.
|
||||
*/
|
||||
enum {
|
||||
STM_OPTION_GUARANTEED = 0,
|
||||
STM_OPTION_INVARIANT,
|
||||
};
|
||||
|
||||
#endif
|
||||
113
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cramfs_fs.h
Normal file
113
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cramfs_fs.h
Normal file
@ -0,0 +1,113 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __CRAMFS_H
|
||||
#define __CRAMFS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/magic.h>
|
||||
|
||||
#define CRAMFS_SIGNATURE "Compressed ROMFS"
|
||||
|
||||
/*
|
||||
* Width of various bitfields in struct cramfs_inode.
|
||||
* Primarily used to generate warnings in mkcramfs.
|
||||
*/
|
||||
#define CRAMFS_MODE_WIDTH 16
|
||||
#define CRAMFS_UID_WIDTH 16
|
||||
#define CRAMFS_SIZE_WIDTH 24
|
||||
#define CRAMFS_GID_WIDTH 8
|
||||
#define CRAMFS_NAMELEN_WIDTH 6
|
||||
#define CRAMFS_OFFSET_WIDTH 26
|
||||
|
||||
/*
|
||||
* Since inode.namelen is a unsigned 6-bit number, the maximum cramfs
|
||||
* path length is 63 << 2 = 252.
|
||||
*/
|
||||
#define CRAMFS_MAXPATHLEN (((1 << CRAMFS_NAMELEN_WIDTH) - 1) << 2)
|
||||
|
||||
/*
|
||||
* Reasonably terse representation of the inode data.
|
||||
*/
|
||||
struct cramfs_inode {
|
||||
__u32 mode:CRAMFS_MODE_WIDTH, uid:CRAMFS_UID_WIDTH;
|
||||
/* SIZE for device files is i_rdev */
|
||||
__u32 size:CRAMFS_SIZE_WIDTH, gid:CRAMFS_GID_WIDTH;
|
||||
/* NAMELEN is the length of the file name, divided by 4 and
|
||||
rounded up. (cramfs doesn't support hard links.) */
|
||||
/* OFFSET: For symlinks and non-empty regular files, this
|
||||
contains the offset (divided by 4) of the file data in
|
||||
compressed form (starting with an array of block pointers;
|
||||
see README). For non-empty directories it is the offset
|
||||
(divided by 4) of the inode of the first file in that
|
||||
directory. For anything else, offset is zero. */
|
||||
__u32 namelen:CRAMFS_NAMELEN_WIDTH, offset:CRAMFS_OFFSET_WIDTH;
|
||||
};
|
||||
|
||||
struct cramfs_info {
|
||||
__u32 crc;
|
||||
__u32 edition;
|
||||
__u32 blocks;
|
||||
__u32 files;
|
||||
};
|
||||
|
||||
/*
|
||||
* Superblock information at the beginning of the FS.
|
||||
*/
|
||||
struct cramfs_super {
|
||||
__u32 magic; /* 0x28cd3d45 - random number */
|
||||
__u32 size; /* length in bytes */
|
||||
__u32 flags; /* feature flags */
|
||||
__u32 future; /* reserved for future use */
|
||||
__u8 signature[16]; /* "Compressed ROMFS" */
|
||||
struct cramfs_info fsid; /* unique filesystem info */
|
||||
__u8 name[16]; /* user-defined name */
|
||||
struct cramfs_inode root; /* root inode data */
|
||||
};
|
||||
|
||||
/*
|
||||
* Feature flags
|
||||
*
|
||||
* 0x00000000 - 0x000000ff: features that work for all past kernels
|
||||
* 0x00000100 - 0xffffffff: features that don't work for past kernels
|
||||
*/
|
||||
#define CRAMFS_FLAG_FSID_VERSION_2 0x00000001 /* fsid version #2 */
|
||||
#define CRAMFS_FLAG_SORTED_DIRS 0x00000002 /* sorted dirs */
|
||||
#define CRAMFS_FLAG_HOLES 0x00000100 /* support for holes */
|
||||
#define CRAMFS_FLAG_WRONG_SIGNATURE 0x00000200 /* reserved */
|
||||
#define CRAMFS_FLAG_SHIFTED_ROOT_OFFSET 0x00000400 /* shifted root fs */
|
||||
#define CRAMFS_FLAG_EXT_BLOCK_POINTERS 0x00000800 /* block pointer extensions */
|
||||
|
||||
/*
|
||||
* Valid values in super.flags. Currently we refuse to mount
|
||||
* if (flags & ~CRAMFS_SUPPORTED_FLAGS). Maybe that should be
|
||||
* changed to test super.future instead.
|
||||
*/
|
||||
#define CRAMFS_SUPPORTED_FLAGS ( 0x000000ff \
|
||||
| CRAMFS_FLAG_HOLES \
|
||||
| CRAMFS_FLAG_WRONG_SIGNATURE \
|
||||
| CRAMFS_FLAG_SHIFTED_ROOT_OFFSET \
|
||||
| CRAMFS_FLAG_EXT_BLOCK_POINTERS )
|
||||
|
||||
/*
|
||||
* Block pointer flags
|
||||
*
|
||||
* The maximum block offset that needs to be represented is roughly:
|
||||
*
|
||||
* (1 << CRAMFS_OFFSET_WIDTH) * 4 +
|
||||
* (1 << CRAMFS_SIZE_WIDTH) / PAGE_SIZE * (4 + PAGE_SIZE)
|
||||
* = 0x11004000
|
||||
*
|
||||
* That leaves room for 3 flag bits in the block pointer table.
|
||||
*/
|
||||
#define CRAMFS_BLK_FLAG_UNCOMPRESSED (1 << 31)
|
||||
#define CRAMFS_BLK_FLAG_DIRECT_PTR (1 << 30)
|
||||
|
||||
#define CRAMFS_BLK_FLAGS ( CRAMFS_BLK_FLAG_UNCOMPRESSED \
|
||||
| CRAMFS_BLK_FLAG_DIRECT_PTR )
|
||||
|
||||
/*
|
||||
* Direct blocks are at least 4-byte aligned.
|
||||
* Pointers to direct blocks are shifted down by 2 bits.
|
||||
*/
|
||||
#define CRAMFS_BLK_DIRECT_PTR_SHIFT 2
|
||||
|
||||
#endif /* __CRAMFS_H */
|
||||
205
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cryptouser.h
Normal file
205
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cryptouser.h
Normal file
@ -0,0 +1,205 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Crypto user configuration API.
|
||||
*
|
||||
* Copyright (C) 2011 secunet Security Networks AG
|
||||
* Copyright (C) 2011 Steffen Klassert <steffen.klassert@secunet.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CRYPTOUSER_H
|
||||
#define _LINUX_CRYPTOUSER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Netlink configuration messages. */
|
||||
enum {
|
||||
CRYPTO_MSG_BASE = 0x10,
|
||||
CRYPTO_MSG_NEWALG = 0x10,
|
||||
CRYPTO_MSG_DELALG,
|
||||
CRYPTO_MSG_UPDATEALG,
|
||||
CRYPTO_MSG_GETALG,
|
||||
CRYPTO_MSG_DELRNG,
|
||||
CRYPTO_MSG_GETSTAT,
|
||||
__CRYPTO_MSG_MAX
|
||||
};
|
||||
#define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
|
||||
#define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE)
|
||||
|
||||
#define CRYPTO_MAX_NAME 64
|
||||
|
||||
/* Netlink message attributes. */
|
||||
enum crypto_attr_type_t {
|
||||
CRYPTOCFGA_UNSPEC,
|
||||
CRYPTOCFGA_PRIORITY_VAL, /* __u32 */
|
||||
CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */
|
||||
CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */
|
||||
CRYPTOCFGA_REPORT_BLKCIPHER, /* struct crypto_report_blkcipher */
|
||||
CRYPTOCFGA_REPORT_AEAD, /* struct crypto_report_aead */
|
||||
CRYPTOCFGA_REPORT_COMPRESS, /* struct crypto_report_comp */
|
||||
CRYPTOCFGA_REPORT_RNG, /* struct crypto_report_rng */
|
||||
CRYPTOCFGA_REPORT_CIPHER, /* struct crypto_report_cipher */
|
||||
CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */
|
||||
CRYPTOCFGA_REPORT_KPP, /* struct crypto_report_kpp */
|
||||
CRYPTOCFGA_REPORT_ACOMP, /* struct crypto_report_acomp */
|
||||
CRYPTOCFGA_STAT_LARVAL, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_HASH, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_BLKCIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_AEAD, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_COMPRESS, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_RNG, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_CIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_AKCIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_KPP, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_ACOMP, /* struct crypto_stat */
|
||||
__CRYPTOCFGA_MAX
|
||||
|
||||
#define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
|
||||
};
|
||||
|
||||
struct crypto_user_alg {
|
||||
char cru_name[CRYPTO_MAX_NAME];
|
||||
char cru_driver_name[CRYPTO_MAX_NAME];
|
||||
char cru_module_name[CRYPTO_MAX_NAME];
|
||||
__u32 cru_type;
|
||||
__u32 cru_mask;
|
||||
__u32 cru_refcnt;
|
||||
__u32 cru_flags;
|
||||
};
|
||||
|
||||
struct crypto_stat_aead {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
__u64 stat_encrypt_tlen;
|
||||
__u64 stat_decrypt_cnt;
|
||||
__u64 stat_decrypt_tlen;
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
struct crypto_stat_akcipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
__u64 stat_encrypt_tlen;
|
||||
__u64 stat_decrypt_cnt;
|
||||
__u64 stat_decrypt_tlen;
|
||||
__u64 stat_verify_cnt;
|
||||
__u64 stat_sign_cnt;
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
struct crypto_stat_cipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
__u64 stat_encrypt_tlen;
|
||||
__u64 stat_decrypt_cnt;
|
||||
__u64 stat_decrypt_tlen;
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
struct crypto_stat_compress {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_compress_cnt;
|
||||
__u64 stat_compress_tlen;
|
||||
__u64 stat_decompress_cnt;
|
||||
__u64 stat_decompress_tlen;
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
struct crypto_stat_hash {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_hash_cnt;
|
||||
__u64 stat_hash_tlen;
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
struct crypto_stat_kpp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_setsecret_cnt;
|
||||
__u64 stat_generate_public_key_cnt;
|
||||
__u64 stat_compute_shared_secret_cnt;
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
struct crypto_stat_rng {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_generate_cnt;
|
||||
__u64 stat_generate_tlen;
|
||||
__u64 stat_seed_cnt;
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
struct crypto_stat_larval {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
struct crypto_report_larval {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
struct crypto_report_hash {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
unsigned int blocksize;
|
||||
unsigned int digestsize;
|
||||
};
|
||||
|
||||
struct crypto_report_cipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
unsigned int blocksize;
|
||||
unsigned int min_keysize;
|
||||
unsigned int max_keysize;
|
||||
};
|
||||
|
||||
struct crypto_report_blkcipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
char geniv[CRYPTO_MAX_NAME];
|
||||
unsigned int blocksize;
|
||||
unsigned int min_keysize;
|
||||
unsigned int max_keysize;
|
||||
unsigned int ivsize;
|
||||
};
|
||||
|
||||
struct crypto_report_aead {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
char geniv[CRYPTO_MAX_NAME];
|
||||
unsigned int blocksize;
|
||||
unsigned int maxauthsize;
|
||||
unsigned int ivsize;
|
||||
};
|
||||
|
||||
struct crypto_report_comp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
struct crypto_report_rng {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
unsigned int seedsize;
|
||||
};
|
||||
|
||||
struct crypto_report_akcipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
struct crypto_report_kpp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
struct crypto_report_acomp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
#define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \
|
||||
sizeof(struct crypto_report_blkcipher))
|
||||
|
||||
#endif /* _LINUX_CRYPTOUSER_H */
|
||||
34
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cuda.h
Normal file
34
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cuda.h
Normal file
@ -0,0 +1,34 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Definitions for talking to the CUDA. The CUDA is a microcontroller
|
||||
* which controls the ADB, system power, RTC, and various other things.
|
||||
*
|
||||
* Copyright (C) 1996 Paul Mackerras.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CUDA_H
|
||||
#define _LINUX_CUDA_H
|
||||
|
||||
/* CUDA commands (2nd byte) */
|
||||
#define CUDA_WARM_START 0
|
||||
#define CUDA_AUTOPOLL 1
|
||||
#define CUDA_GET_6805_ADDR 2
|
||||
#define CUDA_GET_TIME 3
|
||||
#define CUDA_GET_PRAM 7
|
||||
#define CUDA_SET_6805_ADDR 8
|
||||
#define CUDA_SET_TIME 9
|
||||
#define CUDA_POWERDOWN 0xa
|
||||
#define CUDA_POWERUP_TIME 0xb
|
||||
#define CUDA_SET_PRAM 0xc
|
||||
#define CUDA_MS_RESET 0xd
|
||||
#define CUDA_SEND_DFAC 0xe
|
||||
#define CUDA_RESET_SYSTEM 0x11
|
||||
#define CUDA_SET_IPL 0x12
|
||||
#define CUDA_SET_AUTO_RATE 0x14
|
||||
#define CUDA_GET_AUTO_RATE 0x16
|
||||
#define CUDA_SET_DEVICE_LIST 0x19
|
||||
#define CUDA_GET_DEVICE_LIST 0x1a
|
||||
#define CUDA_GET_SET_IIC 0x22
|
||||
|
||||
|
||||
#endif /* _LINUX_CUDA_H */
|
||||
494
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cyclades.h
Normal file
494
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cyclades.h
Normal file
@ -0,0 +1,494 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* $Revision: 3.0 $$Date: 1998/11/02 14:20:59 $
|
||||
* linux/include/linux/cyclades.h
|
||||
*
|
||||
* This file was initially written by
|
||||
* Randolph Bentson <bentson@grieg.seaslug.org> and is maintained by
|
||||
* Ivan Passos <ivan@cyclades.com>.
|
||||
*
|
||||
* This file contains the general definitions for the cyclades.c driver
|
||||
*$Log: cyclades.h,v $
|
||||
*Revision 3.1 2002/01/29 11:36:16 henrique
|
||||
*added throttle field on struct cyclades_port to indicate whether the
|
||||
*port is throttled or not
|
||||
*
|
||||
*Revision 3.1 2000/04/19 18:52:52 ivan
|
||||
*converted address fields to unsigned long and added fields for physical
|
||||
*addresses on cyclades_card structure;
|
||||
*
|
||||
*Revision 3.0 1998/11/02 14:20:59 ivan
|
||||
*added nports field on cyclades_card structure;
|
||||
*
|
||||
*Revision 2.5 1998/08/03 16:57:01 ivan
|
||||
*added cyclades_idle_stats structure;
|
||||
*
|
||||
*Revision 2.4 1998/06/01 12:09:53 ivan
|
||||
*removed closing_wait2 from cyclades_port structure;
|
||||
*
|
||||
*Revision 2.3 1998/03/16 18:01:12 ivan
|
||||
*changes in the cyclades_port structure to get it closer to the
|
||||
*standard serial port structure;
|
||||
*added constants for new ioctls;
|
||||
*
|
||||
*Revision 2.2 1998/02/17 16:50:00 ivan
|
||||
*changes in the cyclades_port structure (addition of shutdown_wait and
|
||||
*chip_rev variables);
|
||||
*added constants for new ioctls and for CD1400 rev. numbers.
|
||||
*
|
||||
*Revision 2.1 1997/10/24 16:03:00 ivan
|
||||
*added rflow (which allows enabling the CD1400 special flow control
|
||||
*feature) and rtsdtr_inv (which allows DTR/RTS pin inversion) to
|
||||
*cyclades_port structure;
|
||||
*added Alpha support
|
||||
*
|
||||
*Revision 2.0 1997/06/30 10:30:00 ivan
|
||||
*added some new doorbell command constants related to IOCTLW and
|
||||
*UART error signaling
|
||||
*
|
||||
*Revision 1.8 1997/06/03 15:30:00 ivan
|
||||
*added constant ZFIRM_HLT
|
||||
*added constant CyPCI_Ze_win ( = 2 * Cy_PCI_Zwin)
|
||||
*
|
||||
*Revision 1.7 1997/03/26 10:30:00 daniel
|
||||
*new entries at the end of cyclades_port struct to reallocate
|
||||
*variables illegally allocated within card memory.
|
||||
*
|
||||
*Revision 1.6 1996/09/09 18:35:30 bentson
|
||||
*fold in changes for Cyclom-Z -- including structures for
|
||||
*communicating with board as well modest changes to original
|
||||
*structures to support new features.
|
||||
*
|
||||
*Revision 1.5 1995/11/13 21:13:31 bentson
|
||||
*changes suggested by Michael Chastain <mec@duracef.shout.net>
|
||||
*to support use of this file in non-kernel applications
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_CYCLADES_H
|
||||
#define _LINUX_CYCLADES_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct cyclades_monitor {
|
||||
unsigned long int_count;
|
||||
unsigned long char_count;
|
||||
unsigned long char_max;
|
||||
unsigned long char_last;
|
||||
};
|
||||
|
||||
/*
|
||||
* These stats all reflect activity since the device was last initialized.
|
||||
* (i.e., since the port was opened with no other processes already having it
|
||||
* open)
|
||||
*/
|
||||
struct cyclades_idle_stats {
|
||||
__kernel_time_t in_use; /* Time device has been in use (secs) */
|
||||
__kernel_time_t recv_idle; /* Time since last char received (secs) */
|
||||
__kernel_time_t xmit_idle; /* Time since last char transmitted (secs) */
|
||||
unsigned long recv_bytes; /* Bytes received */
|
||||
unsigned long xmit_bytes; /* Bytes transmitted */
|
||||
unsigned long overruns; /* Input overruns */
|
||||
unsigned long frame_errs; /* Input framing errors */
|
||||
unsigned long parity_errs; /* Input parity errors */
|
||||
};
|
||||
|
||||
#define CYCLADES_MAGIC 0x4359
|
||||
|
||||
#define CYGETMON 0x435901
|
||||
#define CYGETTHRESH 0x435902
|
||||
#define CYSETTHRESH 0x435903
|
||||
#define CYGETDEFTHRESH 0x435904
|
||||
#define CYSETDEFTHRESH 0x435905
|
||||
#define CYGETTIMEOUT 0x435906
|
||||
#define CYSETTIMEOUT 0x435907
|
||||
#define CYGETDEFTIMEOUT 0x435908
|
||||
#define CYSETDEFTIMEOUT 0x435909
|
||||
#define CYSETRFLOW 0x43590a
|
||||
#define CYGETRFLOW 0x43590b
|
||||
#define CYSETRTSDTR_INV 0x43590c
|
||||
#define CYGETRTSDTR_INV 0x43590d
|
||||
#define CYZSETPOLLCYCLE 0x43590e
|
||||
#define CYZGETPOLLCYCLE 0x43590f
|
||||
#define CYGETCD1400VER 0x435910
|
||||
#define CYSETWAIT 0x435912
|
||||
#define CYGETWAIT 0x435913
|
||||
|
||||
/*************** CYCLOM-Z ADDITIONS ***************/
|
||||
|
||||
#define CZIOC ('M' << 8)
|
||||
#define CZ_NBOARDS (CZIOC|0xfa)
|
||||
#define CZ_BOOT_START (CZIOC|0xfb)
|
||||
#define CZ_BOOT_DATA (CZIOC|0xfc)
|
||||
#define CZ_BOOT_END (CZIOC|0xfd)
|
||||
#define CZ_TEST (CZIOC|0xfe)
|
||||
|
||||
#define CZ_DEF_POLL (HZ/25)
|
||||
|
||||
#define MAX_BOARD 4 /* Max number of boards */
|
||||
#define MAX_DEV 256 /* Max number of ports total */
|
||||
#define CYZ_MAX_SPEED 921600
|
||||
|
||||
#define CYZ_FIFO_SIZE 16
|
||||
|
||||
#define CYZ_BOOT_NWORDS 0x100
|
||||
struct CYZ_BOOT_CTRL {
|
||||
unsigned short nboard;
|
||||
int status[MAX_BOARD];
|
||||
int nchannel[MAX_BOARD];
|
||||
int fw_rev[MAX_BOARD];
|
||||
unsigned long offset;
|
||||
unsigned long data[CYZ_BOOT_NWORDS];
|
||||
};
|
||||
|
||||
|
||||
#ifndef DP_WINDOW_SIZE
|
||||
/*
|
||||
* Memory Window Sizes
|
||||
*/
|
||||
|
||||
#define DP_WINDOW_SIZE (0x00080000) /* window size 512 Kb */
|
||||
#define ZE_DP_WINDOW_SIZE (0x00100000) /* window size 1 Mb (Ze and
|
||||
8Zo V.2 */
|
||||
#define CTRL_WINDOW_SIZE (0x00000080) /* runtime regs 128 bytes */
|
||||
|
||||
/*
|
||||
* CUSTOM_REG - Cyclom-Z/PCI Custom Registers Set. The driver
|
||||
* normally will access only interested on the fpga_id, fpga_version,
|
||||
* start_cpu and stop_cpu.
|
||||
*/
|
||||
|
||||
struct CUSTOM_REG {
|
||||
__u32 fpga_id; /* FPGA Identification Register */
|
||||
__u32 fpga_version; /* FPGA Version Number Register */
|
||||
__u32 cpu_start; /* CPU start Register (write) */
|
||||
__u32 cpu_stop; /* CPU stop Register (write) */
|
||||
__u32 misc_reg; /* Miscellaneous Register */
|
||||
__u32 idt_mode; /* IDT mode Register */
|
||||
__u32 uart_irq_status; /* UART IRQ status Register */
|
||||
__u32 clear_timer0_irq; /* Clear timer interrupt Register */
|
||||
__u32 clear_timer1_irq; /* Clear timer interrupt Register */
|
||||
__u32 clear_timer2_irq; /* Clear timer interrupt Register */
|
||||
__u32 test_register; /* Test Register */
|
||||
__u32 test_count; /* Test Count Register */
|
||||
__u32 timer_select; /* Timer select register */
|
||||
__u32 pr_uart_irq_status; /* Prioritized UART IRQ stat Reg */
|
||||
__u32 ram_wait_state; /* RAM wait-state Register */
|
||||
__u32 uart_wait_state; /* UART wait-state Register */
|
||||
__u32 timer_wait_state; /* timer wait-state Register */
|
||||
__u32 ack_wait_state; /* ACK wait State Register */
|
||||
};
|
||||
|
||||
/*
|
||||
* RUNTIME_9060 - PLX PCI9060ES local configuration and shared runtime
|
||||
* registers. This structure can be used to access the 9060 registers
|
||||
* (memory mapped).
|
||||
*/
|
||||
|
||||
struct RUNTIME_9060 {
|
||||
__u32 loc_addr_range; /* 00h - Local Address Range */
|
||||
__u32 loc_addr_base; /* 04h - Local Address Base */
|
||||
__u32 loc_arbitr; /* 08h - Local Arbitration */
|
||||
__u32 endian_descr; /* 0Ch - Big/Little Endian Descriptor */
|
||||
__u32 loc_rom_range; /* 10h - Local ROM Range */
|
||||
__u32 loc_rom_base; /* 14h - Local ROM Base */
|
||||
__u32 loc_bus_descr; /* 18h - Local Bus descriptor */
|
||||
__u32 loc_range_mst; /* 1Ch - Local Range for Master to PCI */
|
||||
__u32 loc_base_mst; /* 20h - Local Base for Master PCI */
|
||||
__u32 loc_range_io; /* 24h - Local Range for Master IO */
|
||||
__u32 pci_base_mst; /* 28h - PCI Base for Master PCI */
|
||||
__u32 pci_conf_io; /* 2Ch - PCI configuration for Master IO */
|
||||
__u32 filler1; /* 30h */
|
||||
__u32 filler2; /* 34h */
|
||||
__u32 filler3; /* 38h */
|
||||
__u32 filler4; /* 3Ch */
|
||||
__u32 mail_box_0; /* 40h - Mail Box 0 */
|
||||
__u32 mail_box_1; /* 44h - Mail Box 1 */
|
||||
__u32 mail_box_2; /* 48h - Mail Box 2 */
|
||||
__u32 mail_box_3; /* 4Ch - Mail Box 3 */
|
||||
__u32 filler5; /* 50h */
|
||||
__u32 filler6; /* 54h */
|
||||
__u32 filler7; /* 58h */
|
||||
__u32 filler8; /* 5Ch */
|
||||
__u32 pci_doorbell; /* 60h - PCI to Local Doorbell */
|
||||
__u32 loc_doorbell; /* 64h - Local to PCI Doorbell */
|
||||
__u32 intr_ctrl_stat; /* 68h - Interrupt Control/Status */
|
||||
__u32 init_ctrl; /* 6Ch - EEPROM control, Init Control, etc */
|
||||
};
|
||||
|
||||
/* Values for the Local Base Address re-map register */
|
||||
|
||||
#define WIN_RAM 0x00000001L /* set the sliding window to RAM */
|
||||
#define WIN_CREG 0x14000001L /* set the window to custom Registers */
|
||||
|
||||
/* Values timer select registers */
|
||||
|
||||
#define TIMER_BY_1M 0x00 /* clock divided by 1M */
|
||||
#define TIMER_BY_256K 0x01 /* clock divided by 256k */
|
||||
#define TIMER_BY_128K 0x02 /* clock divided by 128k */
|
||||
#define TIMER_BY_32K 0x03 /* clock divided by 32k */
|
||||
|
||||
/****************** ****************** *******************/
|
||||
#endif
|
||||
|
||||
#ifndef ZFIRM_ID
|
||||
/* #include "zfwint.h" */
|
||||
/****************** ****************** *******************/
|
||||
/*
|
||||
* This file contains the definitions for interfacing with the
|
||||
* Cyclom-Z ZFIRM Firmware.
|
||||
*/
|
||||
|
||||
/* General Constant definitions */
|
||||
|
||||
#define MAX_CHAN 64 /* max number of channels per board */
|
||||
|
||||
/* firmware id structure (set after boot) */
|
||||
|
||||
#define ID_ADDRESS 0x00000180L /* signature/pointer address */
|
||||
#define ZFIRM_ID 0x5557465AL /* ZFIRM/U signature */
|
||||
#define ZFIRM_HLT 0x59505B5CL /* ZFIRM needs external power supply */
|
||||
#define ZFIRM_RST 0x56040674L /* RST signal (due to FW reset) */
|
||||
|
||||
#define ZF_TINACT_DEF 1000 /* default inactivity timeout
|
||||
(1000 ms) */
|
||||
#define ZF_TINACT ZF_TINACT_DEF
|
||||
|
||||
struct FIRM_ID {
|
||||
__u32 signature; /* ZFIRM/U signature */
|
||||
__u32 zfwctrl_addr; /* pointer to ZFW_CTRL structure */
|
||||
};
|
||||
|
||||
/* Op. System id */
|
||||
|
||||
#define C_OS_LINUX 0x00000030 /* generic Linux system */
|
||||
|
||||
/* channel op_mode */
|
||||
|
||||
#define C_CH_DISABLE 0x00000000 /* channel is disabled */
|
||||
#define C_CH_TXENABLE 0x00000001 /* channel Tx enabled */
|
||||
#define C_CH_RXENABLE 0x00000002 /* channel Rx enabled */
|
||||
#define C_CH_ENABLE 0x00000003 /* channel Tx/Rx enabled */
|
||||
#define C_CH_LOOPBACK 0x00000004 /* Loopback mode */
|
||||
|
||||
/* comm_parity - parity */
|
||||
|
||||
#define C_PR_NONE 0x00000000 /* None */
|
||||
#define C_PR_ODD 0x00000001 /* Odd */
|
||||
#define C_PR_EVEN 0x00000002 /* Even */
|
||||
#define C_PR_MARK 0x00000004 /* Mark */
|
||||
#define C_PR_SPACE 0x00000008 /* Space */
|
||||
#define C_PR_PARITY 0x000000ff
|
||||
|
||||
#define C_PR_DISCARD 0x00000100 /* discard char with frame/par error */
|
||||
#define C_PR_IGNORE 0x00000200 /* ignore frame/par error */
|
||||
|
||||
/* comm_data_l - data length and stop bits */
|
||||
|
||||
#define C_DL_CS5 0x00000001
|
||||
#define C_DL_CS6 0x00000002
|
||||
#define C_DL_CS7 0x00000004
|
||||
#define C_DL_CS8 0x00000008
|
||||
#define C_DL_CS 0x0000000f
|
||||
#define C_DL_1STOP 0x00000010
|
||||
#define C_DL_15STOP 0x00000020
|
||||
#define C_DL_2STOP 0x00000040
|
||||
#define C_DL_STOP 0x000000f0
|
||||
|
||||
/* interrupt enabling/status */
|
||||
|
||||
#define C_IN_DISABLE 0x00000000 /* zero, disable interrupts */
|
||||
#define C_IN_TXBEMPTY 0x00000001 /* tx buffer empty */
|
||||
#define C_IN_TXLOWWM 0x00000002 /* tx buffer below LWM */
|
||||
#define C_IN_RXHIWM 0x00000010 /* rx buffer above HWM */
|
||||
#define C_IN_RXNNDT 0x00000020 /* rx no new data timeout */
|
||||
#define C_IN_MDCD 0x00000100 /* modem DCD change */
|
||||
#define C_IN_MDSR 0x00000200 /* modem DSR change */
|
||||
#define C_IN_MRI 0x00000400 /* modem RI change */
|
||||
#define C_IN_MCTS 0x00000800 /* modem CTS change */
|
||||
#define C_IN_RXBRK 0x00001000 /* Break received */
|
||||
#define C_IN_PR_ERROR 0x00002000 /* parity error */
|
||||
#define C_IN_FR_ERROR 0x00004000 /* frame error */
|
||||
#define C_IN_OVR_ERROR 0x00008000 /* overrun error */
|
||||
#define C_IN_RXOFL 0x00010000 /* RX buffer overflow */
|
||||
#define C_IN_IOCTLW 0x00020000 /* I/O control w/ wait */
|
||||
#define C_IN_MRTS 0x00040000 /* modem RTS drop */
|
||||
#define C_IN_ICHAR 0x00080000
|
||||
|
||||
/* flow control */
|
||||
|
||||
#define C_FL_OXX 0x00000001 /* output Xon/Xoff flow control */
|
||||
#define C_FL_IXX 0x00000002 /* output Xon/Xoff flow control */
|
||||
#define C_FL_OIXANY 0x00000004 /* output Xon/Xoff (any xon) */
|
||||
#define C_FL_SWFLOW 0x0000000f
|
||||
|
||||
/* flow status */
|
||||
|
||||
#define C_FS_TXIDLE 0x00000000 /* no Tx data in the buffer or UART */
|
||||
#define C_FS_SENDING 0x00000001 /* UART is sending data */
|
||||
#define C_FS_SWFLOW 0x00000002 /* Tx is stopped by received Xoff */
|
||||
|
||||
/* rs_control/rs_status RS-232 signals */
|
||||
|
||||
#define C_RS_PARAM 0x80000000 /* Indicates presence of parameter in
|
||||
IOCTLM command */
|
||||
#define C_RS_RTS 0x00000001 /* RTS */
|
||||
#define C_RS_DTR 0x00000004 /* DTR */
|
||||
#define C_RS_DCD 0x00000100 /* CD */
|
||||
#define C_RS_DSR 0x00000200 /* DSR */
|
||||
#define C_RS_RI 0x00000400 /* RI */
|
||||
#define C_RS_CTS 0x00000800 /* CTS */
|
||||
|
||||
/* commands Host <-> Board */
|
||||
|
||||
#define C_CM_RESET 0x01 /* reset/flush buffers */
|
||||
#define C_CM_IOCTL 0x02 /* re-read CH_CTRL */
|
||||
#define C_CM_IOCTLW 0x03 /* re-read CH_CTRL, intr when done */
|
||||
#define C_CM_IOCTLM 0x04 /* RS-232 outputs change */
|
||||
#define C_CM_SENDXOFF 0x10 /* send Xoff */
|
||||
#define C_CM_SENDXON 0x11 /* send Xon */
|
||||
#define C_CM_CLFLOW 0x12 /* Clear flow control (resume) */
|
||||
#define C_CM_SENDBRK 0x41 /* send break */
|
||||
#define C_CM_INTBACK 0x42 /* Interrupt back */
|
||||
#define C_CM_SET_BREAK 0x43 /* Tx break on */
|
||||
#define C_CM_CLR_BREAK 0x44 /* Tx break off */
|
||||
#define C_CM_CMD_DONE 0x45 /* Previous command done */
|
||||
#define C_CM_INTBACK2 0x46 /* Alternate Interrupt back */
|
||||
#define C_CM_TINACT 0x51 /* set inactivity detection */
|
||||
#define C_CM_IRQ_ENBL 0x52 /* enable generation of interrupts */
|
||||
#define C_CM_IRQ_DSBL 0x53 /* disable generation of interrupts */
|
||||
#define C_CM_ACK_ENBL 0x54 /* enable acknowledged interrupt mode */
|
||||
#define C_CM_ACK_DSBL 0x55 /* disable acknowledged intr mode */
|
||||
#define C_CM_FLUSH_RX 0x56 /* flushes Rx buffer */
|
||||
#define C_CM_FLUSH_TX 0x57 /* flushes Tx buffer */
|
||||
#define C_CM_Q_ENABLE 0x58 /* enables queue access from the
|
||||
driver */
|
||||
#define C_CM_Q_DISABLE 0x59 /* disables queue access from the
|
||||
driver */
|
||||
|
||||
#define C_CM_TXBEMPTY 0x60 /* Tx buffer is empty */
|
||||
#define C_CM_TXLOWWM 0x61 /* Tx buffer low water mark */
|
||||
#define C_CM_RXHIWM 0x62 /* Rx buffer high water mark */
|
||||
#define C_CM_RXNNDT 0x63 /* rx no new data timeout */
|
||||
#define C_CM_TXFEMPTY 0x64
|
||||
#define C_CM_ICHAR 0x65
|
||||
#define C_CM_MDCD 0x70 /* modem DCD change */
|
||||
#define C_CM_MDSR 0x71 /* modem DSR change */
|
||||
#define C_CM_MRI 0x72 /* modem RI change */
|
||||
#define C_CM_MCTS 0x73 /* modem CTS change */
|
||||
#define C_CM_MRTS 0x74 /* modem RTS drop */
|
||||
#define C_CM_RXBRK 0x84 /* Break received */
|
||||
#define C_CM_PR_ERROR 0x85 /* Parity error */
|
||||
#define C_CM_FR_ERROR 0x86 /* Frame error */
|
||||
#define C_CM_OVR_ERROR 0x87 /* Overrun error */
|
||||
#define C_CM_RXOFL 0x88 /* RX buffer overflow */
|
||||
#define C_CM_CMDERROR 0x90 /* command error */
|
||||
#define C_CM_FATAL 0x91 /* fatal error */
|
||||
#define C_CM_HW_RESET 0x92 /* reset board */
|
||||
|
||||
/*
|
||||
* CH_CTRL - This per port structure contains all parameters
|
||||
* that control an specific port. It can be seen as the
|
||||
* configuration registers of a "super-serial-controller".
|
||||
*/
|
||||
|
||||
struct CH_CTRL {
|
||||
__u32 op_mode; /* operation mode */
|
||||
__u32 intr_enable; /* interrupt masking */
|
||||
__u32 sw_flow; /* SW flow control */
|
||||
__u32 flow_status; /* output flow status */
|
||||
__u32 comm_baud; /* baud rate - numerically specified */
|
||||
__u32 comm_parity; /* parity */
|
||||
__u32 comm_data_l; /* data length/stop */
|
||||
__u32 comm_flags; /* other flags */
|
||||
__u32 hw_flow; /* HW flow control */
|
||||
__u32 rs_control; /* RS-232 outputs */
|
||||
__u32 rs_status; /* RS-232 inputs */
|
||||
__u32 flow_xon; /* xon char */
|
||||
__u32 flow_xoff; /* xoff char */
|
||||
__u32 hw_overflow; /* hw overflow counter */
|
||||
__u32 sw_overflow; /* sw overflow counter */
|
||||
__u32 comm_error; /* frame/parity error counter */
|
||||
__u32 ichar;
|
||||
__u32 filler[7];
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* BUF_CTRL - This per channel structure contains
|
||||
* all Tx and Rx buffer control for a given channel.
|
||||
*/
|
||||
|
||||
struct BUF_CTRL {
|
||||
__u32 flag_dma; /* buffers are in Host memory */
|
||||
__u32 tx_bufaddr; /* address of the tx buffer */
|
||||
__u32 tx_bufsize; /* tx buffer size */
|
||||
__u32 tx_threshold; /* tx low water mark */
|
||||
__u32 tx_get; /* tail index tx buf */
|
||||
__u32 tx_put; /* head index tx buf */
|
||||
__u32 rx_bufaddr; /* address of the rx buffer */
|
||||
__u32 rx_bufsize; /* rx buffer size */
|
||||
__u32 rx_threshold; /* rx high water mark */
|
||||
__u32 rx_get; /* tail index rx buf */
|
||||
__u32 rx_put; /* head index rx buf */
|
||||
__u32 filler[5]; /* filler to align structures */
|
||||
};
|
||||
|
||||
/*
|
||||
* BOARD_CTRL - This per board structure contains all global
|
||||
* control fields related to the board.
|
||||
*/
|
||||
|
||||
struct BOARD_CTRL {
|
||||
|
||||
/* static info provided by the on-board CPU */
|
||||
__u32 n_channel; /* number of channels */
|
||||
__u32 fw_version; /* firmware version */
|
||||
|
||||
/* static info provided by the driver */
|
||||
__u32 op_system; /* op_system id */
|
||||
__u32 dr_version; /* driver version */
|
||||
|
||||
/* board control area */
|
||||
__u32 inactivity; /* inactivity control */
|
||||
|
||||
/* host to FW commands */
|
||||
__u32 hcmd_channel; /* channel number */
|
||||
__u32 hcmd_param; /* pointer to parameters */
|
||||
|
||||
/* FW to Host commands */
|
||||
__u32 fwcmd_channel; /* channel number */
|
||||
__u32 fwcmd_param; /* pointer to parameters */
|
||||
__u32 zf_int_queue_addr; /* offset for INT_QUEUE structure */
|
||||
|
||||
/* filler so the structures are aligned */
|
||||
__u32 filler[6];
|
||||
};
|
||||
|
||||
/* Host Interrupt Queue */
|
||||
|
||||
#define QUEUE_SIZE (10*MAX_CHAN)
|
||||
|
||||
struct INT_QUEUE {
|
||||
unsigned char intr_code[QUEUE_SIZE];
|
||||
unsigned long channel[QUEUE_SIZE];
|
||||
unsigned long param[QUEUE_SIZE];
|
||||
unsigned long put;
|
||||
unsigned long get;
|
||||
};
|
||||
|
||||
/*
|
||||
* ZFW_CTRL - This is the data structure that includes all other
|
||||
* data structures used by the Firmware.
|
||||
*/
|
||||
|
||||
struct ZFW_CTRL {
|
||||
struct BOARD_CTRL board_ctrl;
|
||||
struct CH_CTRL ch_ctrl[MAX_CHAN];
|
||||
struct BUF_CTRL buf_ctrl[MAX_CHAN];
|
||||
};
|
||||
|
||||
/****************** ****************** *******************/
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_CYCLADES_H */
|
||||
102
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cycx_cfm.h
Normal file
102
ramdisk/initramfs/glibc_riscv64/usr/include/linux/cycx_cfm.h
Normal file
@ -0,0 +1,102 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* cycx_cfm.h Cyclom 2X WAN Link Driver.
|
||||
* Definitions for the Cyclom 2X Firmware Module (CFM).
|
||||
*
|
||||
* Author: Arnaldo Carvalho de Melo <acme@conectiva.com.br>
|
||||
*
|
||||
* Copyright: (c) 1998-2003 Arnaldo Carvalho de Melo
|
||||
*
|
||||
* Based on sdlasfm.h by Gene Kozin <74604.152@compuserve.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
* ============================================================================
|
||||
* 1998/08/08 acme Initial version.
|
||||
*/
|
||||
#ifndef _CYCX_CFM_H
|
||||
#define _CYCX_CFM_H
|
||||
|
||||
/* Defines */
|
||||
|
||||
#define CFM_VERSION 2
|
||||
#define CFM_SIGNATURE "CFM - Cyclades CYCX Firmware Module"
|
||||
|
||||
/* min/max */
|
||||
#define CFM_IMAGE_SIZE 0x20000 /* max size of CYCX code image file */
|
||||
#define CFM_DESCR_LEN 256 /* max length of description string */
|
||||
#define CFM_MAX_CYCX 1 /* max number of compatible adapters */
|
||||
#define CFM_LOAD_BUFSZ 0x400 /* buffer size for reset code (buffer_load) */
|
||||
|
||||
/* Firmware Commands */
|
||||
#define GEN_POWER_ON 0x1280
|
||||
|
||||
#define GEN_SET_SEG 0x1401 /* boot segment setting. */
|
||||
#define GEN_BOOT_DAT 0x1402 /* boot data. */
|
||||
#define GEN_START 0x1403 /* board start. */
|
||||
#define GEN_DEFPAR 0x1404 /* buffer length for boot. */
|
||||
|
||||
/* Adapter Types */
|
||||
#define CYCX_2X 2
|
||||
/* for now only the 2X is supported, no plans to support 8X or 16X */
|
||||
#define CYCX_8X 8
|
||||
#define CYCX_16X 16
|
||||
|
||||
#define CFID_X25_2X 5200
|
||||
|
||||
/**
|
||||
* struct cycx_fw_info - firmware module information.
|
||||
* @codeid - firmware ID
|
||||
* @version - firmware version number
|
||||
* @adapter - compatible adapter types
|
||||
* @memsize - minimum memory size
|
||||
* @reserved - reserved
|
||||
* @startoffs - entry point offset
|
||||
* @winoffs - dual-port memory window offset
|
||||
* @codeoffs - code load offset
|
||||
* @codesize - code size
|
||||
* @dataoffs - configuration data load offset
|
||||
* @datasize - configuration data size
|
||||
*/
|
||||
struct cycx_fw_info {
|
||||
unsigned short codeid;
|
||||
unsigned short version;
|
||||
unsigned short adapter[CFM_MAX_CYCX];
|
||||
unsigned long memsize;
|
||||
unsigned short reserved[2];
|
||||
unsigned short startoffs;
|
||||
unsigned short winoffs;
|
||||
unsigned short codeoffs;
|
||||
unsigned long codesize;
|
||||
unsigned short dataoffs;
|
||||
unsigned long datasize;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cycx_firmware - CYCX firmware file structure
|
||||
* @signature - CFM file signature
|
||||
* @version - file format version
|
||||
* @checksum - info + image
|
||||
* @reserved - reserved
|
||||
* @descr - description string
|
||||
* @info - firmware module info
|
||||
* @image - code image (variable size)
|
||||
*/
|
||||
struct cycx_firmware {
|
||||
char signature[80];
|
||||
unsigned short version;
|
||||
unsigned short checksum;
|
||||
unsigned short reserved[6];
|
||||
char descr[CFM_DESCR_LEN];
|
||||
struct cycx_fw_info info;
|
||||
unsigned char image[0];
|
||||
};
|
||||
|
||||
struct cycx_fw_header {
|
||||
unsigned long reset_size;
|
||||
unsigned long data_size;
|
||||
unsigned long code_size;
|
||||
};
|
||||
#endif /* _CYCX_CFM_H */
|
||||
769
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dcbnl.h
Normal file
769
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dcbnl.h
Normal file
@ -0,0 +1,769 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (c) 2008-2011, Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
* Place - Suite 330, Boston, MA 02111-1307 USA.
|
||||
*
|
||||
* Author: Lucy Liu <lucy.liu@intel.com>
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_DCBNL_H__
|
||||
#define __LINUX_DCBNL_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* IEEE 802.1Qaz std supported values */
|
||||
#define IEEE_8021QAZ_MAX_TCS 8
|
||||
|
||||
#define IEEE_8021QAZ_TSA_STRICT 0
|
||||
#define IEEE_8021QAZ_TSA_CB_SHAPER 1
|
||||
#define IEEE_8021QAZ_TSA_ETS 2
|
||||
#define IEEE_8021QAZ_TSA_VENDOR 255
|
||||
|
||||
/* This structure contains the IEEE 802.1Qaz ETS managed object
|
||||
*
|
||||
* @willing: willing bit in ETS configuration TLV
|
||||
* @ets_cap: indicates supported capacity of ets feature
|
||||
* @cbs: credit based shaper ets algorithm supported
|
||||
* @tc_tx_bw: tc tx bandwidth indexed by traffic class
|
||||
* @tc_rx_bw: tc rx bandwidth indexed by traffic class
|
||||
* @tc_tsa: TSA Assignment table, indexed by traffic class
|
||||
* @prio_tc: priority assignment table mapping 8021Qp to traffic class
|
||||
* @tc_reco_bw: recommended tc bandwidth indexed by traffic class for TLV
|
||||
* @tc_reco_tsa: recommended tc bandwidth indexed by traffic class for TLV
|
||||
* @reco_prio_tc: recommended tc tx bandwidth indexed by traffic class for TLV
|
||||
*
|
||||
* Recommended values are used to set fields in the ETS recommendation TLV
|
||||
* with hardware offloaded LLDP.
|
||||
*
|
||||
* ----
|
||||
* TSA Assignment 8 bit identifiers
|
||||
* 0 strict priority
|
||||
* 1 credit-based shaper
|
||||
* 2 enhanced transmission selection
|
||||
* 3-254 reserved
|
||||
* 255 vendor specific
|
||||
*/
|
||||
struct ieee_ets {
|
||||
__u8 willing;
|
||||
__u8 ets_cap;
|
||||
__u8 cbs;
|
||||
__u8 tc_tx_bw[IEEE_8021QAZ_MAX_TCS];
|
||||
__u8 tc_rx_bw[IEEE_8021QAZ_MAX_TCS];
|
||||
__u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
|
||||
__u8 prio_tc[IEEE_8021QAZ_MAX_TCS];
|
||||
__u8 tc_reco_bw[IEEE_8021QAZ_MAX_TCS];
|
||||
__u8 tc_reco_tsa[IEEE_8021QAZ_MAX_TCS];
|
||||
__u8 reco_prio_tc[IEEE_8021QAZ_MAX_TCS];
|
||||
};
|
||||
|
||||
/* This structure contains rate limit extension to the IEEE 802.1Qaz ETS
|
||||
* managed object.
|
||||
* Values are 64 bits long and specified in Kbps to enable usage over both
|
||||
* slow and very fast networks.
|
||||
*
|
||||
* @tc_maxrate: maximal tc tx bandwidth indexed by traffic class
|
||||
*/
|
||||
struct ieee_maxrate {
|
||||
__u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
|
||||
};
|
||||
|
||||
enum dcbnl_cndd_states {
|
||||
DCB_CNDD_RESET = 0,
|
||||
DCB_CNDD_EDGE,
|
||||
DCB_CNDD_INTERIOR,
|
||||
DCB_CNDD_INTERIOR_READY,
|
||||
};
|
||||
|
||||
/* This structure contains the IEEE 802.1Qau QCN managed object.
|
||||
*
|
||||
*@rpg_enable: enable QCN RP
|
||||
*@rppp_max_rps: maximum number of RPs allowed for this CNPV on this port
|
||||
*@rpg_time_reset: time between rate increases if no CNMs received.
|
||||
* given in u-seconds
|
||||
*@rpg_byte_reset: transmitted data between rate increases if no CNMs received.
|
||||
* given in Bytes
|
||||
*@rpg_threshold: The number of times rpByteStage or rpTimeStage can count
|
||||
* before RP rate control state machine advances states
|
||||
*@rpg_max_rate: the maxinun rate, in Mbits per second,
|
||||
* at which an RP can transmit
|
||||
*@rpg_ai_rate: The rate, in Mbits per second,
|
||||
* used to increase rpTargetRate in the RPR_ACTIVE_INCREASE
|
||||
*@rpg_hai_rate: The rate, in Mbits per second,
|
||||
* used to increase rpTargetRate in the RPR_HYPER_INCREASE state
|
||||
*@rpg_gd: Upon CNM receive, flow rate is limited to (Fb/Gd)*CurrentRate.
|
||||
* rpgGd is given as log2(Gd), where Gd may only be powers of 2
|
||||
*@rpg_min_dec_fac: The minimum factor by which the current transmit rate
|
||||
* can be changed by reception of a CNM.
|
||||
* value is given as percentage (1-100)
|
||||
*@rpg_min_rate: The minimum value, in bits per second, for rate to limit
|
||||
*@cndd_state_machine: The state of the congestion notification domain
|
||||
* defense state machine, as defined by IEEE 802.3Qau
|
||||
* section 32.1.1. In the interior ready state,
|
||||
* the QCN capable hardware may add CN-TAG TLV to the
|
||||
* outgoing traffic, to specifically identify outgoing
|
||||
* flows.
|
||||
*/
|
||||
|
||||
struct ieee_qcn {
|
||||
__u8 rpg_enable[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rppp_max_rps[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_time_reset[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_byte_reset[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_threshold[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_max_rate[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_ai_rate[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_hai_rate[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_gd[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_min_dec_fac[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rpg_min_rate[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 cndd_state_machine[IEEE_8021QAZ_MAX_TCS];
|
||||
};
|
||||
|
||||
/* This structure contains the IEEE 802.1Qau QCN statistics.
|
||||
*
|
||||
*@rppp_rp_centiseconds: the number of RP-centiseconds accumulated
|
||||
* by RPs at this priority level on this Port
|
||||
*@rppp_created_rps: number of active RPs(flows) that react to CNMs
|
||||
*/
|
||||
|
||||
struct ieee_qcn_stats {
|
||||
__u64 rppp_rp_centiseconds[IEEE_8021QAZ_MAX_TCS];
|
||||
__u32 rppp_created_rps[IEEE_8021QAZ_MAX_TCS];
|
||||
};
|
||||
|
||||
/* This structure contains the IEEE 802.1Qaz PFC managed object
|
||||
*
|
||||
* @pfc_cap: Indicates the number of traffic classes on the local device
|
||||
* that may simultaneously have PFC enabled.
|
||||
* @pfc_en: bitmap indicating pfc enabled traffic classes
|
||||
* @mbc: enable macsec bypass capability
|
||||
* @delay: the allowance made for a round-trip propagation delay of the
|
||||
* link in bits.
|
||||
* @requests: count of the sent pfc frames
|
||||
* @indications: count of the received pfc frames
|
||||
*/
|
||||
struct ieee_pfc {
|
||||
__u8 pfc_cap;
|
||||
__u8 pfc_en;
|
||||
__u8 mbc;
|
||||
__u16 delay;
|
||||
__u64 requests[IEEE_8021QAZ_MAX_TCS];
|
||||
__u64 indications[IEEE_8021QAZ_MAX_TCS];
|
||||
};
|
||||
|
||||
#define IEEE_8021Q_MAX_PRIORITIES 8
|
||||
#define DCBX_MAX_BUFFERS 8
|
||||
struct dcbnl_buffer {
|
||||
/* priority to buffer mapping */
|
||||
__u8 prio2buffer[IEEE_8021Q_MAX_PRIORITIES];
|
||||
/* buffer size in Bytes */
|
||||
__u32 buffer_size[DCBX_MAX_BUFFERS];
|
||||
__u32 total_size;
|
||||
};
|
||||
|
||||
/* CEE DCBX std supported values */
|
||||
#define CEE_DCBX_MAX_PGS 8
|
||||
#define CEE_DCBX_MAX_PRIO 8
|
||||
|
||||
/**
|
||||
* struct cee_pg - CEE Priority-Group managed object
|
||||
*
|
||||
* @willing: willing bit in the PG tlv
|
||||
* @error: error bit in the PG tlv
|
||||
* @pg_en: enable bit of the PG feature
|
||||
* @tcs_supported: number of traffic classes supported
|
||||
* @pg_bw: bandwidth percentage for each priority group
|
||||
* @prio_pg: priority to PG mapping indexed by priority
|
||||
*/
|
||||
struct cee_pg {
|
||||
__u8 willing;
|
||||
__u8 error;
|
||||
__u8 pg_en;
|
||||
__u8 tcs_supported;
|
||||
__u8 pg_bw[CEE_DCBX_MAX_PGS];
|
||||
__u8 prio_pg[CEE_DCBX_MAX_PGS];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cee_pfc - CEE PFC managed object
|
||||
*
|
||||
* @willing: willing bit in the PFC tlv
|
||||
* @error: error bit in the PFC tlv
|
||||
* @pfc_en: bitmap indicating pfc enabled traffic classes
|
||||
* @tcs_supported: number of traffic classes supported
|
||||
*/
|
||||
struct cee_pfc {
|
||||
__u8 willing;
|
||||
__u8 error;
|
||||
__u8 pfc_en;
|
||||
__u8 tcs_supported;
|
||||
};
|
||||
|
||||
/* IEEE 802.1Qaz std supported values */
|
||||
#define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1
|
||||
#define IEEE_8021QAZ_APP_SEL_STREAM 2
|
||||
#define IEEE_8021QAZ_APP_SEL_DGRAM 3
|
||||
#define IEEE_8021QAZ_APP_SEL_ANY 4
|
||||
#define IEEE_8021QAZ_APP_SEL_DSCP 5
|
||||
|
||||
/* This structure contains the IEEE 802.1Qaz APP managed object. This
|
||||
* object is also used for the CEE std as well.
|
||||
*
|
||||
* @selector: protocol identifier type
|
||||
* @protocol: protocol of type indicated
|
||||
* @priority: 3-bit unsigned integer indicating priority for IEEE
|
||||
* 8-bit 802.1p user priority bitmap for CEE
|
||||
*
|
||||
* ----
|
||||
* Selector field values for IEEE 802.1Qaz
|
||||
* 0 Reserved
|
||||
* 1 Ethertype
|
||||
* 2 Well known port number over TCP or SCTP
|
||||
* 3 Well known port number over UDP or DCCP
|
||||
* 4 Well known port number over TCP, SCTP, UDP, or DCCP
|
||||
* 5 Differentiated Services Code Point (DSCP) value
|
||||
* 6-7 Reserved
|
||||
*
|
||||
* Selector field values for CEE
|
||||
* 0 Ethertype
|
||||
* 1 Well known port number over TCP or UDP
|
||||
* 2-3 Reserved
|
||||
*/
|
||||
struct dcb_app {
|
||||
__u8 selector;
|
||||
__u8 priority;
|
||||
__u16 protocol;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dcb_peer_app_info - APP feature information sent by the peer
|
||||
*
|
||||
* @willing: willing bit in the peer APP tlv
|
||||
* @error: error bit in the peer APP tlv
|
||||
*
|
||||
* In addition to this information the full peer APP tlv also contains
|
||||
* a table of 'app_count' APP objects defined above.
|
||||
*/
|
||||
struct dcb_peer_app_info {
|
||||
__u8 willing;
|
||||
__u8 error;
|
||||
};
|
||||
|
||||
struct dcbmsg {
|
||||
__u8 dcb_family;
|
||||
__u8 cmd;
|
||||
__u16 dcb_pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dcbnl_commands - supported DCB commands
|
||||
*
|
||||
* @DCB_CMD_UNDEFINED: unspecified command to catch errors
|
||||
* @DCB_CMD_GSTATE: request the state of DCB in the device
|
||||
* @DCB_CMD_SSTATE: set the state of DCB in the device
|
||||
* @DCB_CMD_PGTX_GCFG: request the priority group configuration for Tx
|
||||
* @DCB_CMD_PGTX_SCFG: set the priority group configuration for Tx
|
||||
* @DCB_CMD_PGRX_GCFG: request the priority group configuration for Rx
|
||||
* @DCB_CMD_PGRX_SCFG: set the priority group configuration for Rx
|
||||
* @DCB_CMD_PFC_GCFG: request the priority flow control configuration
|
||||
* @DCB_CMD_PFC_SCFG: set the priority flow control configuration
|
||||
* @DCB_CMD_SET_ALL: apply all changes to the underlying device
|
||||
* @DCB_CMD_GPERM_HWADDR: get the permanent MAC address of the underlying
|
||||
* device. Only useful when using bonding.
|
||||
* @DCB_CMD_GCAP: request the DCB capabilities of the device
|
||||
* @DCB_CMD_GNUMTCS: get the number of traffic classes currently supported
|
||||
* @DCB_CMD_SNUMTCS: set the number of traffic classes
|
||||
* @DCB_CMD_GBCN: set backward congestion notification configuration
|
||||
* @DCB_CMD_SBCN: get backward congestion notification configration.
|
||||
* @DCB_CMD_GAPP: get application protocol configuration
|
||||
* @DCB_CMD_SAPP: set application protocol configuration
|
||||
* @DCB_CMD_IEEE_SET: set IEEE 802.1Qaz configuration
|
||||
* @DCB_CMD_IEEE_GET: get IEEE 802.1Qaz configuration
|
||||
* @DCB_CMD_GDCBX: get DCBX engine configuration
|
||||
* @DCB_CMD_SDCBX: set DCBX engine configuration
|
||||
* @DCB_CMD_GFEATCFG: get DCBX features flags
|
||||
* @DCB_CMD_SFEATCFG: set DCBX features negotiation flags
|
||||
* @DCB_CMD_CEE_GET: get CEE aggregated configuration
|
||||
* @DCB_CMD_IEEE_DEL: delete IEEE 802.1Qaz configuration
|
||||
*/
|
||||
enum dcbnl_commands {
|
||||
DCB_CMD_UNDEFINED,
|
||||
|
||||
DCB_CMD_GSTATE,
|
||||
DCB_CMD_SSTATE,
|
||||
|
||||
DCB_CMD_PGTX_GCFG,
|
||||
DCB_CMD_PGTX_SCFG,
|
||||
DCB_CMD_PGRX_GCFG,
|
||||
DCB_CMD_PGRX_SCFG,
|
||||
|
||||
DCB_CMD_PFC_GCFG,
|
||||
DCB_CMD_PFC_SCFG,
|
||||
|
||||
DCB_CMD_SET_ALL,
|
||||
|
||||
DCB_CMD_GPERM_HWADDR,
|
||||
|
||||
DCB_CMD_GCAP,
|
||||
|
||||
DCB_CMD_GNUMTCS,
|
||||
DCB_CMD_SNUMTCS,
|
||||
|
||||
DCB_CMD_PFC_GSTATE,
|
||||
DCB_CMD_PFC_SSTATE,
|
||||
|
||||
DCB_CMD_BCN_GCFG,
|
||||
DCB_CMD_BCN_SCFG,
|
||||
|
||||
DCB_CMD_GAPP,
|
||||
DCB_CMD_SAPP,
|
||||
|
||||
DCB_CMD_IEEE_SET,
|
||||
DCB_CMD_IEEE_GET,
|
||||
|
||||
DCB_CMD_GDCBX,
|
||||
DCB_CMD_SDCBX,
|
||||
|
||||
DCB_CMD_GFEATCFG,
|
||||
DCB_CMD_SFEATCFG,
|
||||
|
||||
DCB_CMD_CEE_GET,
|
||||
DCB_CMD_IEEE_DEL,
|
||||
|
||||
__DCB_CMD_ENUM_MAX,
|
||||
DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dcbnl_attrs - DCB top-level netlink attributes
|
||||
*
|
||||
* @DCB_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||
* @DCB_ATTR_IFNAME: interface name of the underlying device (NLA_STRING)
|
||||
* @DCB_ATTR_STATE: enable state of DCB in the device (NLA_U8)
|
||||
* @DCB_ATTR_PFC_STATE: enable state of PFC in the device (NLA_U8)
|
||||
* @DCB_ATTR_PFC_CFG: priority flow control configuration (NLA_NESTED)
|
||||
* @DCB_ATTR_NUM_TC: number of traffic classes supported in the device (NLA_U8)
|
||||
* @DCB_ATTR_PG_CFG: priority group configuration (NLA_NESTED)
|
||||
* @DCB_ATTR_SET_ALL: bool to commit changes to hardware or not (NLA_U8)
|
||||
* @DCB_ATTR_PERM_HWADDR: MAC address of the physical device (NLA_NESTED)
|
||||
* @DCB_ATTR_CAP: DCB capabilities of the device (NLA_NESTED)
|
||||
* @DCB_ATTR_NUMTCS: number of traffic classes supported (NLA_NESTED)
|
||||
* @DCB_ATTR_BCN: backward congestion notification configuration (NLA_NESTED)
|
||||
* @DCB_ATTR_IEEE: IEEE 802.1Qaz supported attributes (NLA_NESTED)
|
||||
* @DCB_ATTR_DCBX: DCBX engine configuration in the device (NLA_U8)
|
||||
* @DCB_ATTR_FEATCFG: DCBX features flags (NLA_NESTED)
|
||||
* @DCB_ATTR_CEE: CEE std supported attributes (NLA_NESTED)
|
||||
*/
|
||||
enum dcbnl_attrs {
|
||||
DCB_ATTR_UNDEFINED,
|
||||
|
||||
DCB_ATTR_IFNAME,
|
||||
DCB_ATTR_STATE,
|
||||
DCB_ATTR_PFC_STATE,
|
||||
DCB_ATTR_PFC_CFG,
|
||||
DCB_ATTR_NUM_TC,
|
||||
DCB_ATTR_PG_CFG,
|
||||
DCB_ATTR_SET_ALL,
|
||||
DCB_ATTR_PERM_HWADDR,
|
||||
DCB_ATTR_CAP,
|
||||
DCB_ATTR_NUMTCS,
|
||||
DCB_ATTR_BCN,
|
||||
DCB_ATTR_APP,
|
||||
|
||||
/* IEEE std attributes */
|
||||
DCB_ATTR_IEEE,
|
||||
|
||||
DCB_ATTR_DCBX,
|
||||
DCB_ATTR_FEATCFG,
|
||||
|
||||
/* CEE nested attributes */
|
||||
DCB_ATTR_CEE,
|
||||
|
||||
__DCB_ATTR_ENUM_MAX,
|
||||
DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ieee_attrs - IEEE 802.1Qaz get/set attributes
|
||||
*
|
||||
* @DCB_ATTR_IEEE_UNSPEC: unspecified
|
||||
* @DCB_ATTR_IEEE_ETS: negotiated ETS configuration
|
||||
* @DCB_ATTR_IEEE_PFC: negotiated PFC configuration
|
||||
* @DCB_ATTR_IEEE_APP_TABLE: negotiated APP configuration
|
||||
* @DCB_ATTR_IEEE_PEER_ETS: peer ETS configuration - get only
|
||||
* @DCB_ATTR_IEEE_PEER_PFC: peer PFC configuration - get only
|
||||
* @DCB_ATTR_IEEE_PEER_APP: peer APP tlv - get only
|
||||
*/
|
||||
enum ieee_attrs {
|
||||
DCB_ATTR_IEEE_UNSPEC,
|
||||
DCB_ATTR_IEEE_ETS,
|
||||
DCB_ATTR_IEEE_PFC,
|
||||
DCB_ATTR_IEEE_APP_TABLE,
|
||||
DCB_ATTR_IEEE_PEER_ETS,
|
||||
DCB_ATTR_IEEE_PEER_PFC,
|
||||
DCB_ATTR_IEEE_PEER_APP,
|
||||
DCB_ATTR_IEEE_MAXRATE,
|
||||
DCB_ATTR_IEEE_QCN,
|
||||
DCB_ATTR_IEEE_QCN_STATS,
|
||||
DCB_ATTR_DCB_BUFFER,
|
||||
__DCB_ATTR_IEEE_MAX
|
||||
};
|
||||
#define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
|
||||
|
||||
enum ieee_attrs_app {
|
||||
DCB_ATTR_IEEE_APP_UNSPEC,
|
||||
DCB_ATTR_IEEE_APP,
|
||||
__DCB_ATTR_IEEE_APP_MAX
|
||||
};
|
||||
#define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum cee_attrs - CEE DCBX get attributes.
|
||||
*
|
||||
* @DCB_ATTR_CEE_UNSPEC: unspecified
|
||||
* @DCB_ATTR_CEE_PEER_PG: peer PG configuration - get only
|
||||
* @DCB_ATTR_CEE_PEER_PFC: peer PFC configuration - get only
|
||||
* @DCB_ATTR_CEE_PEER_APP_TABLE: peer APP tlv - get only
|
||||
* @DCB_ATTR_CEE_TX_PG: TX PG configuration (DCB_CMD_PGTX_GCFG)
|
||||
* @DCB_ATTR_CEE_RX_PG: RX PG configuration (DCB_CMD_PGRX_GCFG)
|
||||
* @DCB_ATTR_CEE_PFC: PFC configuration (DCB_CMD_PFC_GCFG)
|
||||
* @DCB_ATTR_CEE_APP_TABLE: APP configuration (multi DCB_CMD_GAPP)
|
||||
* @DCB_ATTR_CEE_FEAT: DCBX features flags (DCB_CMD_GFEATCFG)
|
||||
*
|
||||
* An aggregated collection of the cee std negotiated parameters.
|
||||
*/
|
||||
enum cee_attrs {
|
||||
DCB_ATTR_CEE_UNSPEC,
|
||||
DCB_ATTR_CEE_PEER_PG,
|
||||
DCB_ATTR_CEE_PEER_PFC,
|
||||
DCB_ATTR_CEE_PEER_APP_TABLE,
|
||||
DCB_ATTR_CEE_TX_PG,
|
||||
DCB_ATTR_CEE_RX_PG,
|
||||
DCB_ATTR_CEE_PFC,
|
||||
DCB_ATTR_CEE_APP_TABLE,
|
||||
DCB_ATTR_CEE_FEAT,
|
||||
__DCB_ATTR_CEE_MAX
|
||||
};
|
||||
#define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1)
|
||||
|
||||
enum peer_app_attr {
|
||||
DCB_ATTR_CEE_PEER_APP_UNSPEC,
|
||||
DCB_ATTR_CEE_PEER_APP_INFO,
|
||||
DCB_ATTR_CEE_PEER_APP,
|
||||
__DCB_ATTR_CEE_PEER_APP_MAX
|
||||
};
|
||||
#define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1)
|
||||
|
||||
enum cee_attrs_app {
|
||||
DCB_ATTR_CEE_APP_UNSPEC,
|
||||
DCB_ATTR_CEE_APP,
|
||||
__DCB_ATTR_CEE_APP_MAX
|
||||
};
|
||||
#define DCB_ATTR_CEE_APP_MAX (__DCB_ATTR_CEE_APP_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum dcbnl_pfc_attrs - DCB Priority Flow Control user priority nested attrs
|
||||
*
|
||||
* @DCB_PFC_UP_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||
* @DCB_PFC_UP_ATTR_0: Priority Flow Control value for User Priority 0 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_1: Priority Flow Control value for User Priority 1 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_2: Priority Flow Control value for User Priority 2 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_3: Priority Flow Control value for User Priority 3 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_4: Priority Flow Control value for User Priority 4 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_5: Priority Flow Control value for User Priority 5 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_6: Priority Flow Control value for User Priority 6 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_7: Priority Flow Control value for User Priority 7 (NLA_U8)
|
||||
* @DCB_PFC_UP_ATTR_MAX: highest attribute number currently defined
|
||||
* @DCB_PFC_UP_ATTR_ALL: apply to all priority flow control attrs (NLA_FLAG)
|
||||
*
|
||||
*/
|
||||
enum dcbnl_pfc_up_attrs {
|
||||
DCB_PFC_UP_ATTR_UNDEFINED,
|
||||
|
||||
DCB_PFC_UP_ATTR_0,
|
||||
DCB_PFC_UP_ATTR_1,
|
||||
DCB_PFC_UP_ATTR_2,
|
||||
DCB_PFC_UP_ATTR_3,
|
||||
DCB_PFC_UP_ATTR_4,
|
||||
DCB_PFC_UP_ATTR_5,
|
||||
DCB_PFC_UP_ATTR_6,
|
||||
DCB_PFC_UP_ATTR_7,
|
||||
DCB_PFC_UP_ATTR_ALL,
|
||||
|
||||
__DCB_PFC_UP_ATTR_ENUM_MAX,
|
||||
DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dcbnl_pg_attrs - DCB Priority Group attributes
|
||||
*
|
||||
* @DCB_PG_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||
* @DCB_PG_ATTR_TC_0: Priority Group Traffic Class 0 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_1: Priority Group Traffic Class 1 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_2: Priority Group Traffic Class 2 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_3: Priority Group Traffic Class 3 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_4: Priority Group Traffic Class 4 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_5: Priority Group Traffic Class 5 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_6: Priority Group Traffic Class 6 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_7: Priority Group Traffic Class 7 configuration (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_TC_MAX: highest attribute number currently defined
|
||||
* @DCB_PG_ATTR_TC_ALL: apply to all traffic classes (NLA_NESTED)
|
||||
* @DCB_PG_ATTR_BW_ID_0: Percent of link bandwidth for Priority Group 0 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_1: Percent of link bandwidth for Priority Group 1 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_2: Percent of link bandwidth for Priority Group 2 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_3: Percent of link bandwidth for Priority Group 3 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_4: Percent of link bandwidth for Priority Group 4 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_5: Percent of link bandwidth for Priority Group 5 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_6: Percent of link bandwidth for Priority Group 6 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_7: Percent of link bandwidth for Priority Group 7 (NLA_U8)
|
||||
* @DCB_PG_ATTR_BW_ID_MAX: highest attribute number currently defined
|
||||
* @DCB_PG_ATTR_BW_ID_ALL: apply to all priority groups (NLA_FLAG)
|
||||
*
|
||||
*/
|
||||
enum dcbnl_pg_attrs {
|
||||
DCB_PG_ATTR_UNDEFINED,
|
||||
|
||||
DCB_PG_ATTR_TC_0,
|
||||
DCB_PG_ATTR_TC_1,
|
||||
DCB_PG_ATTR_TC_2,
|
||||
DCB_PG_ATTR_TC_3,
|
||||
DCB_PG_ATTR_TC_4,
|
||||
DCB_PG_ATTR_TC_5,
|
||||
DCB_PG_ATTR_TC_6,
|
||||
DCB_PG_ATTR_TC_7,
|
||||
DCB_PG_ATTR_TC_MAX,
|
||||
DCB_PG_ATTR_TC_ALL,
|
||||
|
||||
DCB_PG_ATTR_BW_ID_0,
|
||||
DCB_PG_ATTR_BW_ID_1,
|
||||
DCB_PG_ATTR_BW_ID_2,
|
||||
DCB_PG_ATTR_BW_ID_3,
|
||||
DCB_PG_ATTR_BW_ID_4,
|
||||
DCB_PG_ATTR_BW_ID_5,
|
||||
DCB_PG_ATTR_BW_ID_6,
|
||||
DCB_PG_ATTR_BW_ID_7,
|
||||
DCB_PG_ATTR_BW_ID_MAX,
|
||||
DCB_PG_ATTR_BW_ID_ALL,
|
||||
|
||||
__DCB_PG_ATTR_ENUM_MAX,
|
||||
DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dcbnl_tc_attrs - DCB Traffic Class attributes
|
||||
*
|
||||
* @DCB_TC_ATTR_PARAM_UNDEFINED: unspecified attribute to catch errors
|
||||
* @DCB_TC_ATTR_PARAM_PGID: (NLA_U8) Priority group the traffic class belongs to
|
||||
* Valid values are: 0-7
|
||||
* @DCB_TC_ATTR_PARAM_UP_MAPPING: (NLA_U8) Traffic class to user priority map
|
||||
* Some devices may not support changing the
|
||||
* user priority map of a TC.
|
||||
* @DCB_TC_ATTR_PARAM_STRICT_PRIO: (NLA_U8) Strict priority setting
|
||||
* 0 - none
|
||||
* 1 - group strict
|
||||
* 2 - link strict
|
||||
* @DCB_TC_ATTR_PARAM_BW_PCT: optional - (NLA_U8) If supported by the device and
|
||||
* not configured to use link strict priority,
|
||||
* this is the percentage of bandwidth of the
|
||||
* priority group this traffic class belongs to
|
||||
* @DCB_TC_ATTR_PARAM_ALL: (NLA_FLAG) all traffic class parameters
|
||||
*
|
||||
*/
|
||||
enum dcbnl_tc_attrs {
|
||||
DCB_TC_ATTR_PARAM_UNDEFINED,
|
||||
|
||||
DCB_TC_ATTR_PARAM_PGID,
|
||||
DCB_TC_ATTR_PARAM_UP_MAPPING,
|
||||
DCB_TC_ATTR_PARAM_STRICT_PRIO,
|
||||
DCB_TC_ATTR_PARAM_BW_PCT,
|
||||
DCB_TC_ATTR_PARAM_ALL,
|
||||
|
||||
__DCB_TC_ATTR_PARAM_ENUM_MAX,
|
||||
DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dcbnl_cap_attrs - DCB Capability attributes
|
||||
*
|
||||
* @DCB_CAP_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||
* @DCB_CAP_ATTR_ALL: (NLA_FLAG) all capability parameters
|
||||
* @DCB_CAP_ATTR_PG: (NLA_U8) device supports Priority Groups
|
||||
* @DCB_CAP_ATTR_PFC: (NLA_U8) device supports Priority Flow Control
|
||||
* @DCB_CAP_ATTR_UP2TC: (NLA_U8) device supports user priority to
|
||||
* traffic class mapping
|
||||
* @DCB_CAP_ATTR_PG_TCS: (NLA_U8) bitmap where each bit represents a
|
||||
* number of traffic classes the device
|
||||
* can be configured to use for Priority Groups
|
||||
* @DCB_CAP_ATTR_PFC_TCS: (NLA_U8) bitmap where each bit represents a
|
||||
* number of traffic classes the device can be
|
||||
* configured to use for Priority Flow Control
|
||||
* @DCB_CAP_ATTR_GSP: (NLA_U8) device supports group strict priority
|
||||
* @DCB_CAP_ATTR_BCN: (NLA_U8) device supports Backwards Congestion
|
||||
* Notification
|
||||
* @DCB_CAP_ATTR_DCBX: (NLA_U8) device supports DCBX engine
|
||||
*
|
||||
*/
|
||||
enum dcbnl_cap_attrs {
|
||||
DCB_CAP_ATTR_UNDEFINED,
|
||||
DCB_CAP_ATTR_ALL,
|
||||
DCB_CAP_ATTR_PG,
|
||||
DCB_CAP_ATTR_PFC,
|
||||
DCB_CAP_ATTR_UP2TC,
|
||||
DCB_CAP_ATTR_PG_TCS,
|
||||
DCB_CAP_ATTR_PFC_TCS,
|
||||
DCB_CAP_ATTR_GSP,
|
||||
DCB_CAP_ATTR_BCN,
|
||||
DCB_CAP_ATTR_DCBX,
|
||||
|
||||
__DCB_CAP_ATTR_ENUM_MAX,
|
||||
DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* DCBX capability flags
|
||||
*
|
||||
* @DCB_CAP_DCBX_HOST: DCBX negotiation is performed by the host LLDP agent.
|
||||
* 'set' routines are used to configure the device with
|
||||
* the negotiated parameters
|
||||
*
|
||||
* @DCB_CAP_DCBX_LLD_MANAGED: DCBX negotiation is not performed in the host but
|
||||
* by another entity
|
||||
* 'get' routines are used to retrieve the
|
||||
* negotiated parameters
|
||||
* 'set' routines can be used to set the initial
|
||||
* negotiation configuration
|
||||
*
|
||||
* @DCB_CAP_DCBX_VER_CEE: for a non-host DCBX engine, indicates the engine
|
||||
* supports the CEE protocol flavor
|
||||
*
|
||||
* @DCB_CAP_DCBX_VER_IEEE: for a non-host DCBX engine, indicates the engine
|
||||
* supports the IEEE protocol flavor
|
||||
*
|
||||
* @DCB_CAP_DCBX_STATIC: for a non-host DCBX engine, indicates the engine
|
||||
* supports static configuration (i.e no actual
|
||||
* negotiation is performed negotiated parameters equal
|
||||
* the initial configuration)
|
||||
*
|
||||
*/
|
||||
#define DCB_CAP_DCBX_HOST 0x01
|
||||
#define DCB_CAP_DCBX_LLD_MANAGED 0x02
|
||||
#define DCB_CAP_DCBX_VER_CEE 0x04
|
||||
#define DCB_CAP_DCBX_VER_IEEE 0x08
|
||||
#define DCB_CAP_DCBX_STATIC 0x10
|
||||
|
||||
/**
|
||||
* enum dcbnl_numtcs_attrs - number of traffic classes
|
||||
*
|
||||
* @DCB_NUMTCS_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||
* @DCB_NUMTCS_ATTR_ALL: (NLA_FLAG) all traffic class attributes
|
||||
* @DCB_NUMTCS_ATTR_PG: (NLA_U8) number of traffic classes used for
|
||||
* priority groups
|
||||
* @DCB_NUMTCS_ATTR_PFC: (NLA_U8) number of traffic classes which can
|
||||
* support priority flow control
|
||||
*/
|
||||
enum dcbnl_numtcs_attrs {
|
||||
DCB_NUMTCS_ATTR_UNDEFINED,
|
||||
DCB_NUMTCS_ATTR_ALL,
|
||||
DCB_NUMTCS_ATTR_PG,
|
||||
DCB_NUMTCS_ATTR_PFC,
|
||||
|
||||
__DCB_NUMTCS_ATTR_ENUM_MAX,
|
||||
DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
enum dcbnl_bcn_attrs{
|
||||
DCB_BCN_ATTR_UNDEFINED = 0,
|
||||
|
||||
DCB_BCN_ATTR_RP_0,
|
||||
DCB_BCN_ATTR_RP_1,
|
||||
DCB_BCN_ATTR_RP_2,
|
||||
DCB_BCN_ATTR_RP_3,
|
||||
DCB_BCN_ATTR_RP_4,
|
||||
DCB_BCN_ATTR_RP_5,
|
||||
DCB_BCN_ATTR_RP_6,
|
||||
DCB_BCN_ATTR_RP_7,
|
||||
DCB_BCN_ATTR_RP_ALL,
|
||||
|
||||
DCB_BCN_ATTR_BCNA_0,
|
||||
DCB_BCN_ATTR_BCNA_1,
|
||||
DCB_BCN_ATTR_ALPHA,
|
||||
DCB_BCN_ATTR_BETA,
|
||||
DCB_BCN_ATTR_GD,
|
||||
DCB_BCN_ATTR_GI,
|
||||
DCB_BCN_ATTR_TMAX,
|
||||
DCB_BCN_ATTR_TD,
|
||||
DCB_BCN_ATTR_RMIN,
|
||||
DCB_BCN_ATTR_W,
|
||||
DCB_BCN_ATTR_RD,
|
||||
DCB_BCN_ATTR_RU,
|
||||
DCB_BCN_ATTR_WRTT,
|
||||
DCB_BCN_ATTR_RI,
|
||||
DCB_BCN_ATTR_C,
|
||||
DCB_BCN_ATTR_ALL,
|
||||
|
||||
__DCB_BCN_ATTR_ENUM_MAX,
|
||||
DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dcb_general_attr_values - general DCB attribute values
|
||||
*
|
||||
* @DCB_ATTR_UNDEFINED: value used to indicate an attribute is not supported
|
||||
*
|
||||
*/
|
||||
enum dcb_general_attr_values {
|
||||
DCB_ATTR_VALUE_UNDEFINED = 0xff
|
||||
};
|
||||
|
||||
#define DCB_APP_IDTYPE_ETHTYPE 0x00
|
||||
#define DCB_APP_IDTYPE_PORTNUM 0x01
|
||||
enum dcbnl_app_attrs {
|
||||
DCB_APP_ATTR_UNDEFINED,
|
||||
|
||||
DCB_APP_ATTR_IDTYPE,
|
||||
DCB_APP_ATTR_ID,
|
||||
DCB_APP_ATTR_PRIORITY,
|
||||
|
||||
__DCB_APP_ATTR_ENUM_MAX,
|
||||
DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dcbnl_featcfg_attrs - features conifiguration flags
|
||||
*
|
||||
* @DCB_FEATCFG_ATTR_UNDEFINED: unspecified attribute to catch errors
|
||||
* @DCB_FEATCFG_ATTR_ALL: (NLA_FLAG) all features configuration attributes
|
||||
* @DCB_FEATCFG_ATTR_PG: (NLA_U8) configuration flags for priority groups
|
||||
* @DCB_FEATCFG_ATTR_PFC: (NLA_U8) configuration flags for priority
|
||||
* flow control
|
||||
* @DCB_FEATCFG_ATTR_APP: (NLA_U8) configuration flags for application TLV
|
||||
*
|
||||
*/
|
||||
#define DCB_FEATCFG_ERROR 0x01 /* error in feature resolution */
|
||||
#define DCB_FEATCFG_ENABLE 0x02 /* enable feature */
|
||||
#define DCB_FEATCFG_WILLING 0x04 /* feature is willing */
|
||||
#define DCB_FEATCFG_ADVERTISE 0x08 /* advertise feature */
|
||||
enum dcbnl_featcfg_attrs {
|
||||
DCB_FEATCFG_ATTR_UNDEFINED,
|
||||
DCB_FEATCFG_ATTR_ALL,
|
||||
DCB_FEATCFG_ATTR_PG,
|
||||
DCB_FEATCFG_ATTR_PFC,
|
||||
DCB_FEATCFG_ATTR_APP,
|
||||
|
||||
__DCB_FEATCFG_ATTR_ENUM_MAX,
|
||||
DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_DCBNL_H__ */
|
||||
238
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dccp.h
Normal file
238
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dccp.h
Normal file
@ -0,0 +1,238 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_DCCP_H
|
||||
#define _LINUX_DCCP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/**
|
||||
* struct dccp_hdr - generic part of DCCP packet header
|
||||
*
|
||||
* @dccph_sport - Relevant port on the endpoint that sent this packet
|
||||
* @dccph_dport - Relevant port on the other endpoint
|
||||
* @dccph_doff - Data Offset from the start of the DCCP header, in 32-bit words
|
||||
* @dccph_ccval - Used by the HC-Sender CCID
|
||||
* @dccph_cscov - Parts of the packet that are covered by the Checksum field
|
||||
* @dccph_checksum - Internet checksum, depends on dccph_cscov
|
||||
* @dccph_x - 0 = 24 bit sequence number, 1 = 48
|
||||
* @dccph_type - packet type, see DCCP_PKT_ prefixed macros
|
||||
* @dccph_seq - sequence number high or low order 24 bits, depends on dccph_x
|
||||
*/
|
||||
struct dccp_hdr {
|
||||
__be16 dccph_sport,
|
||||
dccph_dport;
|
||||
__u8 dccph_doff;
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 dccph_cscov:4,
|
||||
dccph_ccval:4;
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 dccph_ccval:4,
|
||||
dccph_cscov:4;
|
||||
#else
|
||||
#error "Adjust your <asm/byteorder.h> defines"
|
||||
#endif
|
||||
__sum16 dccph_checksum;
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 dccph_x:1,
|
||||
dccph_type:4,
|
||||
dccph_reserved:3;
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u8 dccph_reserved:3,
|
||||
dccph_type:4,
|
||||
dccph_x:1;
|
||||
#else
|
||||
#error "Adjust your <asm/byteorder.h> defines"
|
||||
#endif
|
||||
__u8 dccph_seq2;
|
||||
__be16 dccph_seq;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dccp_hdr_ext - the low bits of a 48 bit seq packet
|
||||
*
|
||||
* @dccph_seq_low - low 24 bits of a 48 bit seq packet
|
||||
*/
|
||||
struct dccp_hdr_ext {
|
||||
__be32 dccph_seq_low;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dccp_hdr_request - Connection initiation request header
|
||||
*
|
||||
* @dccph_req_service - Service to which the client app wants to connect
|
||||
*/
|
||||
struct dccp_hdr_request {
|
||||
__be32 dccph_req_service;
|
||||
};
|
||||
/**
|
||||
* struct dccp_hdr_ack_bits - acknowledgment bits common to most packets
|
||||
*
|
||||
* @dccph_resp_ack_nr_high - 48 bit ack number high order bits, contains GSR
|
||||
* @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR
|
||||
*/
|
||||
struct dccp_hdr_ack_bits {
|
||||
__be16 dccph_reserved1;
|
||||
__be16 dccph_ack_nr_high;
|
||||
__be32 dccph_ack_nr_low;
|
||||
};
|
||||
/**
|
||||
* struct dccp_hdr_response - Connection initiation response header
|
||||
*
|
||||
* @dccph_resp_ack - 48 bit Acknowledgment Number Subheader (5.3)
|
||||
* @dccph_resp_service - Echoes the Service Code on a received DCCP-Request
|
||||
*/
|
||||
struct dccp_hdr_response {
|
||||
struct dccp_hdr_ack_bits dccph_resp_ack;
|
||||
__be32 dccph_resp_service;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dccp_hdr_reset - Unconditionally shut down a connection
|
||||
*
|
||||
* @dccph_reset_ack - 48 bit Acknowledgment Number Subheader (5.6)
|
||||
* @dccph_reset_code - one of %dccp_reset_codes
|
||||
* @dccph_reset_data - the Data 1 ... Data 3 fields from 5.6
|
||||
*/
|
||||
struct dccp_hdr_reset {
|
||||
struct dccp_hdr_ack_bits dccph_reset_ack;
|
||||
__u8 dccph_reset_code,
|
||||
dccph_reset_data[3];
|
||||
};
|
||||
|
||||
enum dccp_pkt_type {
|
||||
DCCP_PKT_REQUEST = 0,
|
||||
DCCP_PKT_RESPONSE,
|
||||
DCCP_PKT_DATA,
|
||||
DCCP_PKT_ACK,
|
||||
DCCP_PKT_DATAACK,
|
||||
DCCP_PKT_CLOSEREQ,
|
||||
DCCP_PKT_CLOSE,
|
||||
DCCP_PKT_RESET,
|
||||
DCCP_PKT_SYNC,
|
||||
DCCP_PKT_SYNCACK,
|
||||
DCCP_PKT_INVALID,
|
||||
};
|
||||
|
||||
#define DCCP_NR_PKT_TYPES DCCP_PKT_INVALID
|
||||
|
||||
static __inline__ unsigned int dccp_packet_hdr_len(const __u8 type)
|
||||
{
|
||||
if (type == DCCP_PKT_DATA)
|
||||
return 0;
|
||||
if (type == DCCP_PKT_DATAACK ||
|
||||
type == DCCP_PKT_ACK ||
|
||||
type == DCCP_PKT_SYNC ||
|
||||
type == DCCP_PKT_SYNCACK ||
|
||||
type == DCCP_PKT_CLOSE ||
|
||||
type == DCCP_PKT_CLOSEREQ)
|
||||
return sizeof(struct dccp_hdr_ack_bits);
|
||||
if (type == DCCP_PKT_REQUEST)
|
||||
return sizeof(struct dccp_hdr_request);
|
||||
if (type == DCCP_PKT_RESPONSE)
|
||||
return sizeof(struct dccp_hdr_response);
|
||||
return sizeof(struct dccp_hdr_reset);
|
||||
}
|
||||
enum dccp_reset_codes {
|
||||
DCCP_RESET_CODE_UNSPECIFIED = 0,
|
||||
DCCP_RESET_CODE_CLOSED,
|
||||
DCCP_RESET_CODE_ABORTED,
|
||||
DCCP_RESET_CODE_NO_CONNECTION,
|
||||
DCCP_RESET_CODE_PACKET_ERROR,
|
||||
DCCP_RESET_CODE_OPTION_ERROR,
|
||||
DCCP_RESET_CODE_MANDATORY_ERROR,
|
||||
DCCP_RESET_CODE_CONNECTION_REFUSED,
|
||||
DCCP_RESET_CODE_BAD_SERVICE_CODE,
|
||||
DCCP_RESET_CODE_TOO_BUSY,
|
||||
DCCP_RESET_CODE_BAD_INIT_COOKIE,
|
||||
DCCP_RESET_CODE_AGGRESSION_PENALTY,
|
||||
|
||||
DCCP_MAX_RESET_CODES /* Leave at the end! */
|
||||
};
|
||||
|
||||
/* DCCP options */
|
||||
enum {
|
||||
DCCPO_PADDING = 0,
|
||||
DCCPO_MANDATORY = 1,
|
||||
DCCPO_MIN_RESERVED = 3,
|
||||
DCCPO_MAX_RESERVED = 31,
|
||||
DCCPO_CHANGE_L = 32,
|
||||
DCCPO_CONFIRM_L = 33,
|
||||
DCCPO_CHANGE_R = 34,
|
||||
DCCPO_CONFIRM_R = 35,
|
||||
DCCPO_NDP_COUNT = 37,
|
||||
DCCPO_ACK_VECTOR_0 = 38,
|
||||
DCCPO_ACK_VECTOR_1 = 39,
|
||||
DCCPO_TIMESTAMP = 41,
|
||||
DCCPO_TIMESTAMP_ECHO = 42,
|
||||
DCCPO_ELAPSED_TIME = 43,
|
||||
DCCPO_MAX = 45,
|
||||
DCCPO_MIN_RX_CCID_SPECIFIC = 128, /* from sender to receiver */
|
||||
DCCPO_MAX_RX_CCID_SPECIFIC = 191,
|
||||
DCCPO_MIN_TX_CCID_SPECIFIC = 192, /* from receiver to sender */
|
||||
DCCPO_MAX_TX_CCID_SPECIFIC = 255,
|
||||
};
|
||||
/* maximum size of a single TLV-encoded DCCP option (sans type/len bytes) */
|
||||
#define DCCP_SINGLE_OPT_MAXLEN 253
|
||||
|
||||
/* DCCP CCIDS */
|
||||
enum {
|
||||
DCCPC_CCID2 = 2,
|
||||
DCCPC_CCID3 = 3,
|
||||
};
|
||||
|
||||
/* DCCP features (RFC 4340 section 6.4) */
|
||||
enum dccp_feature_numbers {
|
||||
DCCPF_RESERVED = 0,
|
||||
DCCPF_CCID = 1,
|
||||
DCCPF_SHORT_SEQNOS = 2,
|
||||
DCCPF_SEQUENCE_WINDOW = 3,
|
||||
DCCPF_ECN_INCAPABLE = 4,
|
||||
DCCPF_ACK_RATIO = 5,
|
||||
DCCPF_SEND_ACK_VECTOR = 6,
|
||||
DCCPF_SEND_NDP_COUNT = 7,
|
||||
DCCPF_MIN_CSUM_COVER = 8,
|
||||
DCCPF_DATA_CHECKSUM = 9,
|
||||
/* 10-127 reserved */
|
||||
DCCPF_MIN_CCID_SPECIFIC = 128,
|
||||
DCCPF_SEND_LEV_RATE = 192, /* RFC 4342, sec. 8.4 */
|
||||
DCCPF_MAX_CCID_SPECIFIC = 255,
|
||||
};
|
||||
|
||||
/* DCCP socket control message types for cmsg */
|
||||
enum dccp_cmsg_type {
|
||||
DCCP_SCM_PRIORITY = 1,
|
||||
DCCP_SCM_QPOLICY_MAX = 0xFFFF,
|
||||
/* ^-- Up to here reserved exclusively for qpolicy parameters */
|
||||
DCCP_SCM_MAX
|
||||
};
|
||||
|
||||
/* DCCP priorities for outgoing/queued packets */
|
||||
enum dccp_packet_dequeueing_policy {
|
||||
DCCPQ_POLICY_SIMPLE,
|
||||
DCCPQ_POLICY_PRIO,
|
||||
DCCPQ_POLICY_MAX
|
||||
};
|
||||
|
||||
/* DCCP socket options */
|
||||
#define DCCP_SOCKOPT_PACKET_SIZE 1 /* XXX deprecated, without effect */
|
||||
#define DCCP_SOCKOPT_SERVICE 2
|
||||
#define DCCP_SOCKOPT_CHANGE_L 3
|
||||
#define DCCP_SOCKOPT_CHANGE_R 4
|
||||
#define DCCP_SOCKOPT_GET_CUR_MPS 5
|
||||
#define DCCP_SOCKOPT_SERVER_TIMEWAIT 6
|
||||
#define DCCP_SOCKOPT_SEND_CSCOV 10
|
||||
#define DCCP_SOCKOPT_RECV_CSCOV 11
|
||||
#define DCCP_SOCKOPT_AVAILABLE_CCIDS 12
|
||||
#define DCCP_SOCKOPT_CCID 13
|
||||
#define DCCP_SOCKOPT_TX_CCID 14
|
||||
#define DCCP_SOCKOPT_RX_CCID 15
|
||||
#define DCCP_SOCKOPT_QPOLICY_ID 16
|
||||
#define DCCP_SOCKOPT_QPOLICY_TXQLEN 17
|
||||
#define DCCP_SOCKOPT_CCID_RX_INFO 128
|
||||
#define DCCP_SOCKOPT_CCID_TX_INFO 192
|
||||
|
||||
/* maximum number of services provided on the same listening port */
|
||||
#define DCCP_SERVICE_LIST_MAX_LEN 32
|
||||
|
||||
|
||||
#endif /* _LINUX_DCCP_H */
|
||||
471
ramdisk/initramfs/glibc_riscv64/usr/include/linux/devlink.h
Normal file
471
ramdisk/initramfs/glibc_riscv64/usr/include/linux/devlink.h
Normal file
@ -0,0 +1,471 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* include/uapi/linux/devlink.h - Network physical device Netlink interface
|
||||
* Copyright (c) 2016 Mellanox Technologies. All rights reserved.
|
||||
* Copyright (c) 2016 Jiri Pirko <jiri@mellanox.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_DEVLINK_H_
|
||||
#define _LINUX_DEVLINK_H_
|
||||
|
||||
#define DEVLINK_GENL_NAME "devlink"
|
||||
#define DEVLINK_GENL_VERSION 0x1
|
||||
#define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
|
||||
|
||||
enum devlink_command {
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
DEVLINK_CMD_UNSPEC,
|
||||
|
||||
DEVLINK_CMD_GET, /* can dump */
|
||||
DEVLINK_CMD_SET,
|
||||
DEVLINK_CMD_NEW,
|
||||
DEVLINK_CMD_DEL,
|
||||
|
||||
DEVLINK_CMD_PORT_GET, /* can dump */
|
||||
DEVLINK_CMD_PORT_SET,
|
||||
DEVLINK_CMD_PORT_NEW,
|
||||
DEVLINK_CMD_PORT_DEL,
|
||||
|
||||
DEVLINK_CMD_PORT_SPLIT,
|
||||
DEVLINK_CMD_PORT_UNSPLIT,
|
||||
|
||||
DEVLINK_CMD_SB_GET, /* can dump */
|
||||
DEVLINK_CMD_SB_SET,
|
||||
DEVLINK_CMD_SB_NEW,
|
||||
DEVLINK_CMD_SB_DEL,
|
||||
|
||||
DEVLINK_CMD_SB_POOL_GET, /* can dump */
|
||||
DEVLINK_CMD_SB_POOL_SET,
|
||||
DEVLINK_CMD_SB_POOL_NEW,
|
||||
DEVLINK_CMD_SB_POOL_DEL,
|
||||
|
||||
DEVLINK_CMD_SB_PORT_POOL_GET, /* can dump */
|
||||
DEVLINK_CMD_SB_PORT_POOL_SET,
|
||||
DEVLINK_CMD_SB_PORT_POOL_NEW,
|
||||
DEVLINK_CMD_SB_PORT_POOL_DEL,
|
||||
|
||||
DEVLINK_CMD_SB_TC_POOL_BIND_GET, /* can dump */
|
||||
DEVLINK_CMD_SB_TC_POOL_BIND_SET,
|
||||
DEVLINK_CMD_SB_TC_POOL_BIND_NEW,
|
||||
DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
|
||||
|
||||
/* Shared buffer occupancy monitoring commands */
|
||||
DEVLINK_CMD_SB_OCC_SNAPSHOT,
|
||||
DEVLINK_CMD_SB_OCC_MAX_CLEAR,
|
||||
|
||||
DEVLINK_CMD_ESWITCH_GET,
|
||||
#define DEVLINK_CMD_ESWITCH_MODE_GET /* obsolete, never use this! */ \
|
||||
DEVLINK_CMD_ESWITCH_GET
|
||||
|
||||
DEVLINK_CMD_ESWITCH_SET,
|
||||
#define DEVLINK_CMD_ESWITCH_MODE_SET /* obsolete, never use this! */ \
|
||||
DEVLINK_CMD_ESWITCH_SET
|
||||
|
||||
DEVLINK_CMD_DPIPE_TABLE_GET,
|
||||
DEVLINK_CMD_DPIPE_ENTRIES_GET,
|
||||
DEVLINK_CMD_DPIPE_HEADERS_GET,
|
||||
DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
|
||||
DEVLINK_CMD_RESOURCE_SET,
|
||||
DEVLINK_CMD_RESOURCE_DUMP,
|
||||
|
||||
/* Hot driver reload, makes configuration changes take place. The
|
||||
* devlink instance is not released during the process.
|
||||
*/
|
||||
DEVLINK_CMD_RELOAD,
|
||||
|
||||
DEVLINK_CMD_PARAM_GET, /* can dump */
|
||||
DEVLINK_CMD_PARAM_SET,
|
||||
DEVLINK_CMD_PARAM_NEW,
|
||||
DEVLINK_CMD_PARAM_DEL,
|
||||
|
||||
DEVLINK_CMD_REGION_GET,
|
||||
DEVLINK_CMD_REGION_SET,
|
||||
DEVLINK_CMD_REGION_NEW,
|
||||
DEVLINK_CMD_REGION_DEL,
|
||||
DEVLINK_CMD_REGION_READ,
|
||||
|
||||
DEVLINK_CMD_PORT_PARAM_GET, /* can dump */
|
||||
DEVLINK_CMD_PORT_PARAM_SET,
|
||||
DEVLINK_CMD_PORT_PARAM_NEW,
|
||||
DEVLINK_CMD_PORT_PARAM_DEL,
|
||||
|
||||
DEVLINK_CMD_INFO_GET, /* can dump */
|
||||
|
||||
DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_SET,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
|
||||
DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
|
||||
|
||||
DEVLINK_CMD_FLASH_UPDATE,
|
||||
DEVLINK_CMD_FLASH_UPDATE_END, /* notification only */
|
||||
DEVLINK_CMD_FLASH_UPDATE_STATUS, /* notification only */
|
||||
|
||||
DEVLINK_CMD_TRAP_GET, /* can dump */
|
||||
DEVLINK_CMD_TRAP_SET,
|
||||
DEVLINK_CMD_TRAP_NEW,
|
||||
DEVLINK_CMD_TRAP_DEL,
|
||||
|
||||
DEVLINK_CMD_TRAP_GROUP_GET, /* can dump */
|
||||
DEVLINK_CMD_TRAP_GROUP_SET,
|
||||
DEVLINK_CMD_TRAP_GROUP_NEW,
|
||||
DEVLINK_CMD_TRAP_GROUP_DEL,
|
||||
|
||||
/* add new commands above here */
|
||||
__DEVLINK_CMD_MAX,
|
||||
DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
|
||||
};
|
||||
|
||||
enum devlink_port_type {
|
||||
DEVLINK_PORT_TYPE_NOTSET,
|
||||
DEVLINK_PORT_TYPE_AUTO,
|
||||
DEVLINK_PORT_TYPE_ETH,
|
||||
DEVLINK_PORT_TYPE_IB,
|
||||
};
|
||||
|
||||
enum devlink_sb_pool_type {
|
||||
DEVLINK_SB_POOL_TYPE_INGRESS,
|
||||
DEVLINK_SB_POOL_TYPE_EGRESS,
|
||||
};
|
||||
|
||||
/* static threshold - limiting the maximum number of bytes.
|
||||
* dynamic threshold - limiting the maximum number of bytes
|
||||
* based on the currently available free space in the shared buffer pool.
|
||||
* In this mode, the maximum quota is calculated based
|
||||
* on the following formula:
|
||||
* max_quota = alpha / (1 + alpha) * Free_Buffer
|
||||
* While Free_Buffer is the amount of none-occupied buffer associated to
|
||||
* the relevant pool.
|
||||
* The value range which can be passed is 0-20 and serves
|
||||
* for computation of alpha by following formula:
|
||||
* alpha = 2 ^ (passed_value - 10)
|
||||
*/
|
||||
|
||||
enum devlink_sb_threshold_type {
|
||||
DEVLINK_SB_THRESHOLD_TYPE_STATIC,
|
||||
DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC,
|
||||
};
|
||||
|
||||
#define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
|
||||
|
||||
enum devlink_eswitch_mode {
|
||||
DEVLINK_ESWITCH_MODE_LEGACY,
|
||||
DEVLINK_ESWITCH_MODE_SWITCHDEV,
|
||||
};
|
||||
|
||||
enum devlink_eswitch_inline_mode {
|
||||
DEVLINK_ESWITCH_INLINE_MODE_NONE,
|
||||
DEVLINK_ESWITCH_INLINE_MODE_LINK,
|
||||
DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
|
||||
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
|
||||
};
|
||||
|
||||
enum devlink_eswitch_encap_mode {
|
||||
DEVLINK_ESWITCH_ENCAP_MODE_NONE,
|
||||
DEVLINK_ESWITCH_ENCAP_MODE_BASIC,
|
||||
};
|
||||
|
||||
enum devlink_port_flavour {
|
||||
DEVLINK_PORT_FLAVOUR_PHYSICAL, /* Any kind of a port physically
|
||||
* facing the user.
|
||||
*/
|
||||
DEVLINK_PORT_FLAVOUR_CPU, /* CPU port */
|
||||
DEVLINK_PORT_FLAVOUR_DSA, /* Distributed switch architecture
|
||||
* interconnect port.
|
||||
*/
|
||||
DEVLINK_PORT_FLAVOUR_PCI_PF, /* Represents eswitch port for
|
||||
* the PCI PF. It is an internal
|
||||
* port that faces the PCI PF.
|
||||
*/
|
||||
DEVLINK_PORT_FLAVOUR_PCI_VF, /* Represents eswitch port
|
||||
* for the PCI VF. It is an internal
|
||||
* port that faces the PCI VF.
|
||||
*/
|
||||
};
|
||||
|
||||
enum devlink_param_cmode {
|
||||
DEVLINK_PARAM_CMODE_RUNTIME,
|
||||
DEVLINK_PARAM_CMODE_DRIVERINIT,
|
||||
DEVLINK_PARAM_CMODE_PERMANENT,
|
||||
|
||||
/* Add new configuration modes above */
|
||||
__DEVLINK_PARAM_CMODE_MAX,
|
||||
DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1
|
||||
};
|
||||
|
||||
enum devlink_param_fw_load_policy_value {
|
||||
DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER,
|
||||
DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH,
|
||||
DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK,
|
||||
DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN,
|
||||
};
|
||||
|
||||
enum devlink_param_reset_dev_on_drv_probe_value {
|
||||
DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN,
|
||||
DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS,
|
||||
DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER,
|
||||
DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK,
|
||||
};
|
||||
|
||||
enum {
|
||||
DEVLINK_ATTR_STATS_RX_PACKETS, /* u64 */
|
||||
DEVLINK_ATTR_STATS_RX_BYTES, /* u64 */
|
||||
|
||||
__DEVLINK_ATTR_STATS_MAX,
|
||||
DEVLINK_ATTR_STATS_MAX = __DEVLINK_ATTR_STATS_MAX - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum devlink_trap_action - Packet trap action.
|
||||
* @DEVLINK_TRAP_ACTION_DROP: Packet is dropped by the device and a copy is not
|
||||
* sent to the CPU.
|
||||
* @DEVLINK_TRAP_ACTION_TRAP: The sole copy of the packet is sent to the CPU.
|
||||
*/
|
||||
enum devlink_trap_action {
|
||||
DEVLINK_TRAP_ACTION_DROP,
|
||||
DEVLINK_TRAP_ACTION_TRAP,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum devlink_trap_type - Packet trap type.
|
||||
* @DEVLINK_TRAP_TYPE_DROP: Trap reason is a drop. Trapped packets are only
|
||||
* processed by devlink and not injected to the
|
||||
* kernel's Rx path.
|
||||
* @DEVLINK_TRAP_TYPE_EXCEPTION: Trap reason is an exception. Packet was not
|
||||
* forwarded as intended due to an exception
|
||||
* (e.g., missing neighbour entry) and trapped to
|
||||
* control plane for resolution. Trapped packets
|
||||
* are processed by devlink and injected to
|
||||
* the kernel's Rx path.
|
||||
*/
|
||||
enum devlink_trap_type {
|
||||
DEVLINK_TRAP_TYPE_DROP,
|
||||
DEVLINK_TRAP_TYPE_EXCEPTION,
|
||||
};
|
||||
|
||||
enum {
|
||||
/* Trap can report input port as metadata */
|
||||
DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT,
|
||||
};
|
||||
|
||||
enum devlink_attr {
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
DEVLINK_ATTR_UNSPEC,
|
||||
|
||||
/* bus name + dev name together are a handle for devlink entity */
|
||||
DEVLINK_ATTR_BUS_NAME, /* string */
|
||||
DEVLINK_ATTR_DEV_NAME, /* string */
|
||||
|
||||
DEVLINK_ATTR_PORT_INDEX, /* u32 */
|
||||
DEVLINK_ATTR_PORT_TYPE, /* u16 */
|
||||
DEVLINK_ATTR_PORT_DESIRED_TYPE, /* u16 */
|
||||
DEVLINK_ATTR_PORT_NETDEV_IFINDEX, /* u32 */
|
||||
DEVLINK_ATTR_PORT_NETDEV_NAME, /* string */
|
||||
DEVLINK_ATTR_PORT_IBDEV_NAME, /* string */
|
||||
DEVLINK_ATTR_PORT_SPLIT_COUNT, /* u32 */
|
||||
DEVLINK_ATTR_PORT_SPLIT_GROUP, /* u32 */
|
||||
DEVLINK_ATTR_SB_INDEX, /* u32 */
|
||||
DEVLINK_ATTR_SB_SIZE, /* u32 */
|
||||
DEVLINK_ATTR_SB_INGRESS_POOL_COUNT, /* u16 */
|
||||
DEVLINK_ATTR_SB_EGRESS_POOL_COUNT, /* u16 */
|
||||
DEVLINK_ATTR_SB_INGRESS_TC_COUNT, /* u16 */
|
||||
DEVLINK_ATTR_SB_EGRESS_TC_COUNT, /* u16 */
|
||||
DEVLINK_ATTR_SB_POOL_INDEX, /* u16 */
|
||||
DEVLINK_ATTR_SB_POOL_TYPE, /* u8 */
|
||||
DEVLINK_ATTR_SB_POOL_SIZE, /* u32 */
|
||||
DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE, /* u8 */
|
||||
DEVLINK_ATTR_SB_THRESHOLD, /* u32 */
|
||||
DEVLINK_ATTR_SB_TC_INDEX, /* u16 */
|
||||
DEVLINK_ATTR_SB_OCC_CUR, /* u32 */
|
||||
DEVLINK_ATTR_SB_OCC_MAX, /* u32 */
|
||||
DEVLINK_ATTR_ESWITCH_MODE, /* u16 */
|
||||
DEVLINK_ATTR_ESWITCH_INLINE_MODE, /* u8 */
|
||||
|
||||
DEVLINK_ATTR_DPIPE_TABLES, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_TABLE, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_TABLE_NAME, /* string */
|
||||
DEVLINK_ATTR_DPIPE_TABLE_SIZE, /* u64 */
|
||||
DEVLINK_ATTR_DPIPE_TABLE_MATCHES, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_TABLE_ACTIONS, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED, /* u8 */
|
||||
|
||||
DEVLINK_ATTR_DPIPE_ENTRIES, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_ENTRY, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_ENTRY_INDEX, /* u64 */
|
||||
DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_ENTRY_COUNTER, /* u64 */
|
||||
|
||||
DEVLINK_ATTR_DPIPE_MATCH, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_MATCH_VALUE, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_MATCH_TYPE, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_DPIPE_ACTION, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_ACTION_VALUE, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_ACTION_TYPE, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_DPIPE_VALUE,
|
||||
DEVLINK_ATTR_DPIPE_VALUE_MASK,
|
||||
DEVLINK_ATTR_DPIPE_VALUE_MAPPING, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_DPIPE_HEADERS, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_HEADER, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_HEADER_NAME, /* string */
|
||||
DEVLINK_ATTR_DPIPE_HEADER_ID, /* u32 */
|
||||
DEVLINK_ATTR_DPIPE_HEADER_FIELDS, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_HEADER_GLOBAL, /* u8 */
|
||||
DEVLINK_ATTR_DPIPE_HEADER_INDEX, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_DPIPE_FIELD, /* nested */
|
||||
DEVLINK_ATTR_DPIPE_FIELD_NAME, /* string */
|
||||
DEVLINK_ATTR_DPIPE_FIELD_ID, /* u32 */
|
||||
DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH, /* u32 */
|
||||
DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_PAD,
|
||||
|
||||
DEVLINK_ATTR_ESWITCH_ENCAP_MODE, /* u8 */
|
||||
DEVLINK_ATTR_RESOURCE_LIST, /* nested */
|
||||
DEVLINK_ATTR_RESOURCE, /* nested */
|
||||
DEVLINK_ATTR_RESOURCE_NAME, /* string */
|
||||
DEVLINK_ATTR_RESOURCE_ID, /* u64 */
|
||||
DEVLINK_ATTR_RESOURCE_SIZE, /* u64 */
|
||||
DEVLINK_ATTR_RESOURCE_SIZE_NEW, /* u64 */
|
||||
DEVLINK_ATTR_RESOURCE_SIZE_VALID, /* u8 */
|
||||
DEVLINK_ATTR_RESOURCE_SIZE_MIN, /* u64 */
|
||||
DEVLINK_ATTR_RESOURCE_SIZE_MAX, /* u64 */
|
||||
DEVLINK_ATTR_RESOURCE_SIZE_GRAN, /* u64 */
|
||||
DEVLINK_ATTR_RESOURCE_UNIT, /* u8 */
|
||||
DEVLINK_ATTR_RESOURCE_OCC, /* u64 */
|
||||
DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID, /* u64 */
|
||||
DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,/* u64 */
|
||||
|
||||
DEVLINK_ATTR_PORT_FLAVOUR, /* u16 */
|
||||
DEVLINK_ATTR_PORT_NUMBER, /* u32 */
|
||||
DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_PARAM, /* nested */
|
||||
DEVLINK_ATTR_PARAM_NAME, /* string */
|
||||
DEVLINK_ATTR_PARAM_GENERIC, /* flag */
|
||||
DEVLINK_ATTR_PARAM_TYPE, /* u8 */
|
||||
DEVLINK_ATTR_PARAM_VALUES_LIST, /* nested */
|
||||
DEVLINK_ATTR_PARAM_VALUE, /* nested */
|
||||
DEVLINK_ATTR_PARAM_VALUE_DATA, /* dynamic */
|
||||
DEVLINK_ATTR_PARAM_VALUE_CMODE, /* u8 */
|
||||
|
||||
DEVLINK_ATTR_REGION_NAME, /* string */
|
||||
DEVLINK_ATTR_REGION_SIZE, /* u64 */
|
||||
DEVLINK_ATTR_REGION_SNAPSHOTS, /* nested */
|
||||
DEVLINK_ATTR_REGION_SNAPSHOT, /* nested */
|
||||
DEVLINK_ATTR_REGION_SNAPSHOT_ID, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_REGION_CHUNKS, /* nested */
|
||||
DEVLINK_ATTR_REGION_CHUNK, /* nested */
|
||||
DEVLINK_ATTR_REGION_CHUNK_DATA, /* binary */
|
||||
DEVLINK_ATTR_REGION_CHUNK_ADDR, /* u64 */
|
||||
DEVLINK_ATTR_REGION_CHUNK_LEN, /* u64 */
|
||||
|
||||
DEVLINK_ATTR_INFO_DRIVER_NAME, /* string */
|
||||
DEVLINK_ATTR_INFO_SERIAL_NUMBER, /* string */
|
||||
DEVLINK_ATTR_INFO_VERSION_FIXED, /* nested */
|
||||
DEVLINK_ATTR_INFO_VERSION_RUNNING, /* nested */
|
||||
DEVLINK_ATTR_INFO_VERSION_STORED, /* nested */
|
||||
DEVLINK_ATTR_INFO_VERSION_NAME, /* string */
|
||||
DEVLINK_ATTR_INFO_VERSION_VALUE, /* string */
|
||||
|
||||
DEVLINK_ATTR_SB_POOL_CELL_SIZE, /* u32 */
|
||||
|
||||
DEVLINK_ATTR_FMSG, /* nested */
|
||||
DEVLINK_ATTR_FMSG_OBJ_NEST_START, /* flag */
|
||||
DEVLINK_ATTR_FMSG_PAIR_NEST_START, /* flag */
|
||||
DEVLINK_ATTR_FMSG_ARR_NEST_START, /* flag */
|
||||
DEVLINK_ATTR_FMSG_NEST_END, /* flag */
|
||||
DEVLINK_ATTR_FMSG_OBJ_NAME, /* string */
|
||||
DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE, /* u8 */
|
||||
DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA, /* dynamic */
|
||||
|
||||
DEVLINK_ATTR_HEALTH_REPORTER, /* nested */
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_NAME, /* string */
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_STATE, /* u8 */
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT, /* u64 */
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT, /* u64 */
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS, /* u64 */
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD, /* u64 */
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER, /* u8 */
|
||||
|
||||
DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME, /* string */
|
||||
DEVLINK_ATTR_FLASH_UPDATE_COMPONENT, /* string */
|
||||
DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG, /* string */
|
||||
DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE, /* u64 */
|
||||
DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL, /* u64 */
|
||||
|
||||
DEVLINK_ATTR_PORT_PCI_PF_NUMBER, /* u16 */
|
||||
DEVLINK_ATTR_PORT_PCI_VF_NUMBER, /* u16 */
|
||||
|
||||
DEVLINK_ATTR_STATS, /* nested */
|
||||
|
||||
DEVLINK_ATTR_TRAP_NAME, /* string */
|
||||
/* enum devlink_trap_action */
|
||||
DEVLINK_ATTR_TRAP_ACTION, /* u8 */
|
||||
/* enum devlink_trap_type */
|
||||
DEVLINK_ATTR_TRAP_TYPE, /* u8 */
|
||||
DEVLINK_ATTR_TRAP_GENERIC, /* flag */
|
||||
DEVLINK_ATTR_TRAP_METADATA, /* nested */
|
||||
DEVLINK_ATTR_TRAP_GROUP_NAME, /* string */
|
||||
|
||||
DEVLINK_ATTR_RELOAD_FAILED, /* u8 0 or 1 */
|
||||
|
||||
DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS, /* u64 */
|
||||
/* add new attributes above here, update the policy in devlink.c */
|
||||
|
||||
__DEVLINK_ATTR_MAX,
|
||||
DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
|
||||
};
|
||||
|
||||
/* Mapping between internal resource described by the field and system
|
||||
* structure
|
||||
*/
|
||||
enum devlink_dpipe_field_mapping_type {
|
||||
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE,
|
||||
DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX,
|
||||
};
|
||||
|
||||
/* Match type - specify the type of the match */
|
||||
enum devlink_dpipe_match_type {
|
||||
DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT,
|
||||
};
|
||||
|
||||
/* Action type - specify the action type */
|
||||
enum devlink_dpipe_action_type {
|
||||
DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY,
|
||||
};
|
||||
|
||||
enum devlink_dpipe_field_ethernet_id {
|
||||
DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC,
|
||||
};
|
||||
|
||||
enum devlink_dpipe_field_ipv4_id {
|
||||
DEVLINK_DPIPE_FIELD_IPV4_DST_IP,
|
||||
};
|
||||
|
||||
enum devlink_dpipe_field_ipv6_id {
|
||||
DEVLINK_DPIPE_FIELD_IPV6_DST_IP,
|
||||
};
|
||||
|
||||
enum devlink_dpipe_header_id {
|
||||
DEVLINK_DPIPE_HEADER_ETHERNET,
|
||||
DEVLINK_DPIPE_HEADER_IPV4,
|
||||
DEVLINK_DPIPE_HEADER_IPV6,
|
||||
};
|
||||
|
||||
enum devlink_resource_unit {
|
||||
DEVLINK_RESOURCE_UNIT_ENTRY,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_DEVLINK_H_ */
|
||||
76
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dlm.h
Normal file
76
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dlm.h
Normal file
@ -0,0 +1,76 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/******************************************************************************
|
||||
*******************************************************************************
|
||||
**
|
||||
** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
||||
** Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
|
||||
**
|
||||
** This copyrighted material is made available to anyone wishing to use,
|
||||
** modify, copy, or redistribute it subject to the terms and conditions
|
||||
** of the GNU General Public License v.2.
|
||||
**
|
||||
*******************************************************************************
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __DLM_DOT_H__
|
||||
#define __DLM_DOT_H__
|
||||
|
||||
/*
|
||||
* Interface to Distributed Lock Manager (DLM)
|
||||
* routines and structures to use DLM lockspaces
|
||||
*/
|
||||
|
||||
/* Lock levels and flags are here */
|
||||
#include <linux/dlmconstants.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
typedef void dlm_lockspace_t;
|
||||
|
||||
/*
|
||||
* Lock status block
|
||||
*
|
||||
* Use this structure to specify the contents of the lock value block. For a
|
||||
* conversion request, this structure is used to specify the lock ID of the
|
||||
* lock. DLM writes the status of the lock request and the lock ID assigned
|
||||
* to the request in the lock status block.
|
||||
*
|
||||
* sb_lkid: the returned lock ID. It is set on new (non-conversion) requests.
|
||||
* It is available when dlm_lock returns.
|
||||
*
|
||||
* sb_lvbptr: saves or returns the contents of the lock's LVB according to rules
|
||||
* shown for the DLM_LKF_VALBLK flag.
|
||||
*
|
||||
* sb_flags: DLM_SBF_DEMOTED is returned if in the process of promoting a lock,
|
||||
* it was first demoted to NL to avoid conversion deadlock.
|
||||
* DLM_SBF_VALNOTVALID is returned if the resource's LVB is marked invalid.
|
||||
*
|
||||
* sb_status: the returned status of the lock request set prior to AST
|
||||
* execution. Possible return values:
|
||||
*
|
||||
* 0 if lock request was successful
|
||||
* -EAGAIN if request would block and is flagged DLM_LKF_NOQUEUE
|
||||
* -DLM_EUNLOCK if unlock request was successful
|
||||
* -DLM_ECANCEL if a cancel completed successfully
|
||||
* -EDEADLK if a deadlock was detected
|
||||
* -ETIMEDOUT if the lock request was canceled due to a timeout
|
||||
*/
|
||||
|
||||
#define DLM_SBF_DEMOTED 0x01
|
||||
#define DLM_SBF_VALNOTVALID 0x02
|
||||
#define DLM_SBF_ALTMODE 0x04
|
||||
|
||||
struct dlm_lksb {
|
||||
int sb_status;
|
||||
__u32 sb_lkid;
|
||||
char sb_flags;
|
||||
char * sb_lvbptr;
|
||||
};
|
||||
|
||||
/* dlm_new_lockspace() flags */
|
||||
|
||||
#define DLM_LSFL_TIMEWARN 0x00000002
|
||||
#define DLM_LSFL_FS 0x00000004
|
||||
#define DLM_LSFL_NEWEXCL 0x00000008
|
||||
|
||||
|
||||
#endif /* __DLM_DOT_H__ */
|
||||
109
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dlm_device.h
Normal file
109
ramdisk/initramfs/glibc_riscv64/usr/include/linux/dlm_device.h
Normal file
@ -0,0 +1,109 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/******************************************************************************
|
||||
*******************************************************************************
|
||||
**
|
||||
** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
||||
** Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
|
||||
**
|
||||
** This copyrighted material is made available to anyone wishing to use,
|
||||
** modify, copy, or redistribute it subject to the terms and conditions
|
||||
** of the GNU General Public License v.2.
|
||||
**
|
||||
*******************************************************************************
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _LINUX_DLM_DEVICE_H
|
||||
#define _LINUX_DLM_DEVICE_H
|
||||
|
||||
/* This is the device interface for dlm, most users will use a library
|
||||
* interface.
|
||||
*/
|
||||
|
||||
#include <linux/dlm.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define DLM_USER_LVB_LEN 32
|
||||
|
||||
/* Version of the device interface */
|
||||
#define DLM_DEVICE_VERSION_MAJOR 6
|
||||
#define DLM_DEVICE_VERSION_MINOR 0
|
||||
#define DLM_DEVICE_VERSION_PATCH 2
|
||||
|
||||
/* struct passed to the lock write */
|
||||
struct dlm_lock_params {
|
||||
__u8 mode;
|
||||
__u8 namelen;
|
||||
__u16 unused;
|
||||
__u32 flags;
|
||||
__u32 lkid;
|
||||
__u32 parent;
|
||||
__u64 xid;
|
||||
__u64 timeout;
|
||||
void *castparam;
|
||||
void *castaddr;
|
||||
void *bastparam;
|
||||
void *bastaddr;
|
||||
struct dlm_lksb *lksb;
|
||||
char lvb[DLM_USER_LVB_LEN];
|
||||
char name[0];
|
||||
};
|
||||
|
||||
struct dlm_lspace_params {
|
||||
__u32 flags;
|
||||
__u32 minor;
|
||||
char name[0];
|
||||
};
|
||||
|
||||
struct dlm_purge_params {
|
||||
__u32 nodeid;
|
||||
__u32 pid;
|
||||
};
|
||||
|
||||
struct dlm_write_request {
|
||||
__u32 version[3];
|
||||
__u8 cmd;
|
||||
__u8 is64bit;
|
||||
__u8 unused[2];
|
||||
|
||||
union {
|
||||
struct dlm_lock_params lock;
|
||||
struct dlm_lspace_params lspace;
|
||||
struct dlm_purge_params purge;
|
||||
} i;
|
||||
};
|
||||
|
||||
struct dlm_device_version {
|
||||
__u32 version[3];
|
||||
};
|
||||
|
||||
/* struct read from the "device" fd,
|
||||
consists mainly of userspace pointers for the library to use */
|
||||
|
||||
struct dlm_lock_result {
|
||||
__u32 version[3];
|
||||
__u32 length;
|
||||
void * user_astaddr;
|
||||
void * user_astparam;
|
||||
struct dlm_lksb * user_lksb;
|
||||
struct dlm_lksb lksb;
|
||||
__u8 bast_mode;
|
||||
__u8 unused[3];
|
||||
/* Offsets may be zero if no data is present */
|
||||
__u32 lvb_offset;
|
||||
};
|
||||
|
||||
/* Commands passed to the device */
|
||||
#define DLM_USER_LOCK 1
|
||||
#define DLM_USER_UNLOCK 2
|
||||
#define DLM_USER_QUERY 3
|
||||
#define DLM_USER_CREATE_LOCKSPACE 4
|
||||
#define DLM_USER_REMOVE_LOCKSPACE 5
|
||||
#define DLM_USER_PURGE 6
|
||||
#define DLM_USER_DEADLOCK 7
|
||||
|
||||
/* Lockspace flags */
|
||||
#define DLM_USER_LSFLG_AUTOFREE 1
|
||||
#define DLM_USER_LSFLG_FORCEFREE 2
|
||||
|
||||
#endif
|
||||
|
||||
@ -0,0 +1,60 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2007 Red Hat, Inc. All rights reserved.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use,
|
||||
* modify, copy, or redistribute it subject to the terms and conditions
|
||||
* of the GNU General Public License v.2.
|
||||
*/
|
||||
|
||||
#ifndef _DLM_NETLINK_H
|
||||
#define _DLM_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/dlmconstants.h>
|
||||
|
||||
enum {
|
||||
DLM_STATUS_WAITING = 1,
|
||||
DLM_STATUS_GRANTED = 2,
|
||||
DLM_STATUS_CONVERT = 3,
|
||||
};
|
||||
|
||||
#define DLM_LOCK_DATA_VERSION 1
|
||||
|
||||
struct dlm_lock_data {
|
||||
__u16 version;
|
||||
__u32 lockspace_id;
|
||||
int nodeid;
|
||||
int ownpid;
|
||||
__u32 id;
|
||||
__u32 remid;
|
||||
__u64 xid;
|
||||
__s8 status;
|
||||
__s8 grmode;
|
||||
__s8 rqmode;
|
||||
unsigned long timestamp;
|
||||
int resource_namelen;
|
||||
char resource_name[DLM_RESNAME_MAXLEN];
|
||||
};
|
||||
|
||||
enum {
|
||||
DLM_CMD_UNSPEC = 0,
|
||||
DLM_CMD_HELLO, /* user->kernel */
|
||||
DLM_CMD_TIMEOUT, /* kernel->user */
|
||||
__DLM_CMD_MAX,
|
||||
};
|
||||
|
||||
#define DLM_CMD_MAX (__DLM_CMD_MAX - 1)
|
||||
|
||||
enum {
|
||||
DLM_TYPE_UNSPEC = 0,
|
||||
DLM_TYPE_LOCK,
|
||||
__DLM_TYPE_MAX,
|
||||
};
|
||||
|
||||
#define DLM_TYPE_MAX (__DLM_TYPE_MAX - 1)
|
||||
|
||||
#define DLM_GENL_VERSION 0x1
|
||||
#define DLM_GENL_NAME "DLM"
|
||||
|
||||
#endif /* _DLM_NETLINK_H */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user