zoukankan      html  css  js  c++  java
  • POSIX定义的基本数据类型

     POSIX-Portable Operating System Interface for Unix,要求C语言库的<linux/types.h>头文件为每个实现POSIX的机器定义一个一致的类型集。其中的每一个类型定义很容易与本地C语言区分开来,因为它们都以_t结尾。

     

    typedef __kernel_dev_t          dev_t;

    typedef __kernel_ino_t          ino_t;

    typedef __kernel_mode_t         mode_t;

    typedef __kernel_nlink_t        nlink_t;

    typedef __kernel_off_t          off_t;

    typedef __kernel_pid_t          pid_t;

    typedef __kernel_daddr_t        daddr_t;

    typedef __kernel_key_t          key_t;

    typedef __kernel_suseconds_t    suseconds_t;

    typedef __kernel_timer_t        timer_t;

    typedef __kernel_clockid_t      clockid_t;

    typedef __kernel_mqd_t          mqd_t;

     

    #ifdef __KERNEL__

    typedef _Bool                   bool;

     

    typedef __kernel_uid32_t        uid_t;

    typedef __kernel_gid32_t        gid_t;

    typedef __kernel_uid16_t        uid16_t;

    typedef __kernel_gid16_t        gid16_t;

     

    typedef unsigned long           uintptr_t;

     

    #ifdef CONFIG_UID16

     

    typedef __kernel_old_uid_t      old_uid_t;

    typedef __kernel_old_gid_t      old_gid_t;

    #endif

     

     

    #else

    typedef __kernel_uid_t          uid_t;

    typedef __kernel_gid_t          gid_t;

    #endif

     

    typedef __kernel_size_t         size_t;

     

    #ifndef _SSIZE_T

    #define _SSIZE_T

    typedef __kernel_ssize_t        ssize_t;

    #endif

     

     

    typedef unsigned long           __kernel_ino_t;

    typedef unsigned short          __kernel_mode_t;

    typedef unsigned short          __kernel_nlink_t;

    typedef long                    __kernel_off_t;

    typedef int                     __kernel_pid_t;

    typedef unsigned short          __kernel_ipc_pid_t;

    typedef unsigned short          __kernel_uid_t;

    typedef unsigned short          __kernel_gid_t;

    typedef unsigned int            __kernel_size_t;

    typedef int                     __kernel_ssize_t;

    typedef int                     __kernel_ptrdiff_t;

    typedef long                    __kernel_time_t;

    typedef long                    __kernel_suseconds_t;

    typedef long                    __kernel_clock_t;

    typedef int                     __kernel_timer_t;

           可以看出,为了方便数据的移植和统程的统一,在include/linux/types.h中,内核定义了类型的别名,内核可以使用*_t(如dev_t)来统一编程。然后在相关的架构里面对别名进行数据结构的具体定义。

           简要地分析几个例子:

    1) dev_t

           一个包含major和minor的算术类型。对于特定的设备文件,通常可以在/dev子目录下找到。在linux下,一个dev_t可以通过major(),minor(),以及mkdev()宏来操作,这些都可以在<linux/kdev_t.h>中找到。

    2) uid_t,gid_t

           整数类型,分别保存惟一的ID号或者组ID编号。

    3) pid_t

           整数类型,为系统每一个进程提供惟一值。

    4) id_t

           可以涵盖任务pid_t,uid_t或者gid_t的整数类型,不能分割来使用。

    5) off_t

           有符号整型,以字节为单位度量文件大小。

    6) size_t

           无符号整数,度量一个内存对象的大小。例如,一个字符串、数组或者缓冲区。

    7) ssize_t

           有符号整数,它可以表示字节数(正),或者返回错误码(负)。

    更多学习分享文章和资料请参看个人网站: http://www.enxiang.icoc.cc,期待与您一起学习。

  • 相关阅读:
    【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
    【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
    【剑指Offer面试编程题】题目1503:二叉搜索树与双向链表--九度OJ
    【剑指Offer面试编程题】题目1524:复杂链表的复制--九度OJ
    【剑指Offer面试编程题】题目1368:二叉树中和为某一值的路径--九度OJ
    【剑指Offer面试编程题】题目1367:二叉搜索树的后序遍历序列--九度OJ
    【剑指Offer面试编程题】题目1523:从上往下打印二叉树--九度OJ
    【剑指Offer面试编程题】题目1366:栈的压入、弹出序列--九度OJ
    【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
    【剑指Offer面试编程题】题目1391:顺时针打印矩阵--九度OJ
  • 原文地址:https://www.cnblogs.com/LJTbozai/p/3225706.html
Copyright © 2011-2022 走看看