⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 check_glibc_kernelversion.c.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
字号:
/* * Check the lz insn. */#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include "sys.h"#define __LINUX_KERNEL_VERSION 131584#define DL_SYSDEP_OSCHECK(FATAL) \  do {                                                                        \    /* Test whether the kernel is new enough.  This test is only              \       performed if the library is not compiled to run on all                 \       kernels.  */                                                           \    if (__LINUX_KERNEL_VERSION > 0)                                           \      {                                                                       \        char bufmem[64];                                                      \        char *buf = bufmem;                                                   \        unsigned int version;                                                 \        int parts;                                                            \        char *cp;                                                             \        struct utsname uts;                                                   \                                                                              \        /* Try the uname syscall */                                           \        if (__uname (&uts))                                                   \          {                                                                   \            /* This was not successful.  Now try reading the /proc            \               filesystem.  */                                                \            ssize_t reslen;                                                   \            int fd = __open ("/proc/sys/kernel/osrelease", O_RDONLY);         \            if (fd == -1                                                      \                || (reslen = __read (fd, bufmem, sizeof (bufmem))) <= 0)      \              /* This also didn't work.  We give up since we cannot           \                 make sure the library can actually work.  */                 \              FATAL ("FATAL: cannot determine library version\n");            \            __close (fd);                                                     \            buf[MIN (reslen, (ssize_t) sizeof (bufmem) - 1)] = '\0';          \          }                                                                   \        else                                                                  \          buf = uts.release;                                                  \                                                                              \        /* Now convert it into a number.  The string consists of at most      \           three parts.  */                                                   \        version = 0;                                                          \        parts = 0;                                                            \        cp = buf;                                                             \        while ((*cp >= '0') && (*cp <= '9'))                                  \          {                                                                   \            unsigned int here = *cp++ - '0';                                  \                                                                              \            while ((*cp >= '0') && (*cp <= '9'))                              \              {                                                               \                here *= 10;                                                   \                here += *cp++ - '0';                                          \              }                                                               \                                                                              \            ++parts;                                                          \            version <<= 8;                                                    \            version |= here;                                                  \                                                                              \            if (*cp++ != '.')                                                 \              /* Another part following?  */                                  \              break;                                                          \          }                                                                   \                                                                              \        if (parts < 3)                                                        \          version <<= 8 * (3 - parts);                                        \                                                                              \        /* Now we can test with the required version.  */                     \        if (version < __LINUX_KERNEL_VERSION)                                 \          /* Not sufficent.  */                                               \          FATAL ("FATAL: kernel too old\n");                                  \                                                                              \        _dl_osversion = version;                                              \      }                                                                       \  } while (0)int main(void){        char bufmem[64] = "2.6.22";        char *buf = bufmem;        unsigned int version;        int parts;        char *cp;        version = 0;        parts = 0;        cp = buf;        while ((*cp >= '0') && (*cp <= '9'))          {            unsigned int here = *cp++ - '0';            while ((*cp >= '0') && (*cp <= '9'))              {                here *= 10;                here += *cp++ - '0';              }            ++parts;            version <<= 8;            version |= here;            if (*cp++ != '.')              /* Another part following?  */              break;          }        if (parts < 3)          version <<= 8 * (3 - parts);	if (version < __LINUX_KERNEL_VERSION)		err();	pass();	exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -