Linux/error.h中的错误对应(include/asm-generic/(errno.h)、(errno-base.h))

本文详细列举了Linux系统中定义的各种错误代码及其对应的含义,从基本的权限错误到复杂的网络连接问题,涵盖了文件操作、设备使用、网络通信等多个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#ifndef _ASM_GENERIC_ERRNO_H
#define _ASM_GENERIC_ERRNO_H

#include <asm-generic/errno-base.h>

#define	EDEADLK		35	/* Resource deadlock would occur */
#define	ENAMETOOLONG	36	/* File name too long */
#define	ENOLCK		37	/* No record locks available */
#define	ENOSYS		38	/* Function not implemented */
#define	ENOTEMPTY	39	/* Directory not empty */
#define	ELOOP		40	/* Too many symbolic links encountered */
#define	EWOULDBLOCK	EAGAIN	/* Operation would block */
#define	ENOMSG		42	/* No message of desired type */
#define	EIDRM		43	/* Identifier removed */
#define	ECHRNG		44	/* Channel number out of range */
#define	EL2NSYNC	45	/* Level 2 not synchronized */
#define	EL3HLT		46	/* Level 3 halted */
#define	EL3RST		47	/* Level 3 reset */
#define	ELNRNG		48	/* Link number out of range */
#define	EUNATCH		49	/* Protocol driver not attached */
#define	ENOCSI		50	/* No CSI structure available */
#define	EL2HLT		51	/* Level 2 halted */
#define	EBADE		52	/* Invalid exchange */
#define	EBADR		53	/* Invalid request descriptor */
#define	EXFULL		54	/* Exchange full */
#define	ENOANO		55	/* No anode */
#define	EBADRQC		56	/* Invalid request code */
#define	EBADSLT		57	/* Invalid slot */

#define	EDEADLOCK	EDEADLK

#define	EBFONT		59	/* Bad font file format */
#define	ENOSTR		60	/* Device not a stream */
#define	ENODATA		61	/* No data available */
#define	ETIME		62	/* Timer expired */
#define	ENOSR		63	/* Out of streams resources */
#define	ENONET		64	/* Machine is not on the network */
#define	ENOPKG		65	/* Package not installed */
#define	EREMOTE		66	/* Object is remote */
#define	ENOLINK		67	/* Link has been severed */
#define	EADV		68	/* Advertise error */
#define	ESRMNT		69	/* Srmount error */
#define	ECOMM		70	/* Communication error on send */
#define	EPROTO		71	/* Protocol error */
#define	EMULTIHOP	72	/* Multihop attempted */
#define	EDOTDOT		73	/* RFS specific error */
#define	EBADMSG		74	/* Not a data message */
#define	EOVERFLOW	75	/* Value too large for defined data type */
#define	ENOTUNIQ	76	/* Name not unique on network */
#define	EBADFD		77	/* File descriptor in bad state */
#define	EREMCHG		78	/* Remote address changed */
#define	ELIBACC		79	/* Can not access a needed shared library */
#define	ELIBBAD		80	/* Accessing a corrupted shared library */
#define	ELIBSCN		81	/* .lib section in a.out corrupted */
#define	ELIBMAX		82	/* Attempting to link in too many shared libraries */
#define	ELIBEXEC	83	/* Cannot exec a shared library directly */
#define	EILSEQ		84	/* Illegal byte sequence */
#define	ERESTART	85	/* Interrupted system call should be restarted */
#define	ESTRPIPE	86	/* Streams pipe error */
#define	EUSERS		87	/* Too many users */
#define	ENOTSOCK	88	/* Socket operation on non-socket */
#define	EDESTADDRREQ	89	/* Destination address required */
#define	EMSGSIZE	90	/* Message too long */
#define	EPROTOTYPE	91	/* Protocol wrong type for socket */
#define	ENOPROTOOPT	92	/* Protocol not available */
#define	EPROTONOSUPPORT	93	/* Protocol not supported */
#define	ESOCKTNOSUPPORT	94	/* Socket type not supported */
#define	EOPNOTSUPP	95	/* Operation not supported on transport endpoint */
#define	EPFNOSUPPORT	96	/* Protocol family not supported */
#define	EAFNOSUPPORT	97	/* Address family not supported by protocol */
#define	EADDRINUSE	98	/* Address already in use */
#define	EADDRNOTAVAIL	99	/* Cannot assign requested address */
#define	ENETDOWN	100	/* Network is down */
#define	ENETUNREACH	101	/* Network is unreachable */
#define	ENETRESET	102	/* Network dropped connection because of reset */
#define	ECONNABORTED	103	/* Software caused connection abort */
#define	ECONNRESET	104	/* Connection reset by peer */
#define	ENOBUFS		105	/* No buffer space available */
#define	EISCONN		106	/* Transport endpoint is already connected */
#define	ENOTCONN	107	/* Transport endpoint is not connected */
#define	ESHUTDOWN	108	/* Cannot send after transport endpoint shutdown */
#define	ETOOMANYREFS	109	/* Too many references: cannot splice */
#define	ETIMEDOUT	110	/* Connection timed out */
#define	ECONNREFUSED	111	/* Connection refused */
#define	EHOSTDOWN	112	/* Host is down */
#define	EHOSTUNREACH	113	/* No route to host */
#define	EALREADY	114	/* Operation already in progress */
#define	EINPROGRESS	115	/* Operation now in progress */
#define	ESTALE		116	/* Stale NFS file handle */
#define	EUCLEAN		117	/* Structure needs cleaning */
#define	ENOTNAM		118	/* Not a XENIX named type file */
#define	ENAVAIL		119	/* No XENIX semaphores available */
#define	EISNAM		120	/* Is a named type file */
#define	EREMOTEIO	121	/* Remote I/O error */
#define	EDQUOT		122	/* Quota exceeded */

#define	ENOMEDIUM	123	/* No medium found */
#define	EMEDIUMTYPE	124	/* Wrong medium type */
#define	ECANCELED	125	/* Operation Canceled */
#define	ENOKEY		126	/* Required key not available */
#define	EKEYEXPIRED	127	/* Key has expired */
#define	EKEYREVOKED	128	/* Key has been revoked */
#define	EKEYREJECTED	129	/* Key was rejected by service */

/* for robust mutexes */
#define	EOWNERDEAD	130	/* Owner died */
#define	ENOTRECOVERABLE	131	/* State not recoverable */

#define ERFKILL		132	/* Operation not possible due to RF-kill */

#define EHWPOISON	133	/* Memory page has hardware error */

#endif



#ifndef _ASM_GENERIC_ERRNO_BASE_H
#define _ASM_GENERIC_ERRNO_BASE_H

#define	EPERM		 1	/* Operation not permitted */
#define	ENOENT		 2	/* No such file or directory */
#define	ESRCH		 3	/* No such process */
#define	EINTR		 4	/* Interrupted system call */
#define	EIO		 5	/* I/O error */
#define	ENXIO		 6	/* No such device or address */
#define	E2BIG		 7	/* Argument list too long */
#define	ENOEXEC		 8	/* Exec format error */
#define	EBADF		 9	/* Bad file number */
#define	ECHILD		10	/* No child processes */
#define	EAGAIN		11	/* Try again */
#define	ENOMEM		12	/* Out of memory */
#define	EACCES		13	/* Permission denied */
#define	EFAULT		14	/* Bad address */
#define	ENOTBLK		15	/* Block device required */
#define	EBUSY		16	/* Device or resource busy */
#define	EEXIST		17	/* File exists */
#define	EXDEV		18	/* Cross-device link */
#define	ENODEV		19	/* No such device */
#define	ENOTDIR		20	/* Not a directory */
#define	EISDIR		21	/* Is a directory */
#define	EINVAL		22	/* Invalid argument */
#define	ENFILE		23	/* File table overflow */
#define	EMFILE		24	/* Too many open files */
#define	ENOTTY		25	/* Not a typewriter */
#define	ETXTBSY		26	/* Text file busy */
#define	EFBIG		27	/* File too large */
#define	ENOSPC		28	/* No space left on device */
#define	ESPIPE		29	/* Illegal seek */
#define	EROFS		30	/* Read-only file system */
#define	EMLINK		31	/* Too many links */
#define	EPIPE		32	/* Broken pipe */
#define	EDOM		33	/* Math argument out of domain of func */
#define	ERANGE		34	/* Math result not representable */

#endif




<think>好的,用户现在遇到了一个问题,就是使用`rpm -ivh`安装内核头文件包时,文件没有被安装到预期的`/usr/src/kernel`目录。用户之前已经得到了一个详细的排查步骤,现在他们运行了`rpm -qlp`来查看包内容,发现文件都安装在`/usr/include`及其子目录下,而不是`/usr/src/kernel`。需要分析这个问题并给出解决方案。 首先,用户提供的`rpm -qlp`的输出显示所有文件都在`/usr/include`下,这说明这个RPM包的设计是将头文件安装到系统的标准头文件目录,而不是开发用的内核源码目录。通常,内核头文件分为两部分:一部分是用户空间程序使用的头文件(在`/usr/include/linux`等目录),另一部分是内核开发需要的源码和头文件(在`/usr/src/kernel`或类似目录)。 接下来,需要确认这个包是否正确包含了内核开发所需的文件。根据输出,所有文件都在`/usr/include`下,可能这个包只是用户空间的头文件,而不是内核源码头文件。这可能意味着用户安装的是错误的包,或者包本身的结构有问题。 用户的目标是将文件安装到`/usr/src/kernel`,但当前的包并没有包含这些路径。需要解释为什么会出现这种情况,可能的原因包括:包设计问题、用户误解了包的内容、或者系统路径的差异(比如不同的发行版使用不同的路径)。 解决方案方面,首先应该建议用户确认他们下载的包是否正确,是否是专门用于内核开发的包。可能需要联系包的维护者或查看文档,确认这个包是否应该包含`/usr/src/kernel`下的内容。如果包确实有问题,可能需要获取正确的包。 如果用户确实需要将现有文件转移到`/usr/src/kernel`,可以手动创建符号链接,或者调整编译时的头文件路径。不过需要注意,手动移动文件可能会导致包管理系统无法跟踪这些文件,带来后续更新或卸载的问题。 另外,还需要检查系统是否存在符号链接问题,或者内核版本是否匹配。比如,`/usr/src/kernel`可能是一个符号链接,指向实际安装的内核版本目录。如果符号链接缺失,可能需要手动创建。 总结起来,用户的问题根源在于RPM包的文件路径与预期不符,需要从包的内容验证开始,逐步排查,并提供相应的解决方案,包括联系维护者、调整路径或使用正确的包。</think>--- ### **问题分析** 通过 `rpm -qlp` 输出的文件列表可以看到,此 RPM 包 (`kernel-headers-5.4.286_ky10_custom-1.ky10.aarch64.rpm`) 的安装路径集中在 `/usr/include` 目录下,**未包含 `/usr/src/kernel` 目录的任何内容**。这表明: 1. **包功能定位**:该包提供的是 **用户态头文件**(供用户程序调用内核接口),而非 **内核开发头文件**(需包含完整的内核源码结构,通常位于 `/usr/src/kernel`)。 2. **路径差异**:内核开发所需的头文件(如内核模块编译)通常需要完整的源码目录结构(如 `Makefile`、`Kconfig`、`scripts` 等),但此包未包含这些内容。 --- ### **关键结论** - **该包并非内核开发头文件包**,而是 **用户态内核头文件包**(仅包含用户程序所需的内核 API 头文件)。 - 若需编译内核模块或进行内核开发,需额外安装 **内核源码包**(通常包名类似 `kernel-devel` 或 `kernel-source`)。 --- ### **解决方案** #### 1. **安装正确的内核开发包** - 查询麒麟系统对应的内核开发包名称(例如 `kernel-devel-5.4.286_ky10_custom`),使用以下命令安装: ```bash sudo rpm -ivh kernel-devel-5.4.286_ky10_custom-1.ky10.aarch64.rpm ``` - 安装后验证路径: ```bash rpm -ql kernel-devel-5.4.286_ky10_custom | grep "/usr/src/kernel" ``` #### 2. **手动调整路径(临时应急)** 如果开发工具强制依赖 `/usr/src/kernel`,可创建符号链接指向实际头文件路径: ```bash # 假设实际安装路径为 /usr/include/linux sudo ln -s /usr/include/linux /usr/src/kernel ``` #### 3. **联系包维护者** - 提交问题说明:当前包未包含内核开发所需的源码结构,需确认是否: - 包名称或版本错误(例如误用用户态头文件包代替开发包)。 - 发行版自定义路径规则(如麒麟系统可能调整了标准路径)。 --- ### **补充说明:用户态头文件 vs 内核开发头文件** | **类型** | **路径** | **用途** | **包含内容** | |-------------------|-----------------------|-----------------------------|---------------------------------| | 用户态头文件 | `/usr/include/linux` | 用户程序调用内核API(如 `ioctl`) | 精简的API定义头文件(如 `socket.h`) | | 内核开发头文件 | `/usr/src/kernel` | 内核模块编译、驱动开发 | 完整的内核源码、构建脚本、配置文件 | --- ### **操作验证** 1. 检查已安装的内核开发包: ```bash rpm -qa | grep -E "kernel-(devel|source)" ``` 2. 确认内核版本匹配: ```bash uname -r # 查看当前运行的内核版本 rpm -qa | grep "kernel-devel" # 检查开发包版本是否一致 ``` 若版本不一致,需安装与当前运行内核匹配的开发包。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值