嵌入式 ssize_t与size_t的联系
2013-12-02 14:55
239 查看
Ssize_t 与size_t
跟踪linux源码得到以下宏:
#ifndef _SIZE_T
#define _SIZE_T
typedef __kernel_size_t size_t;
#endif
#ifndef _SSIZE_T
#define _SSIZE_T
typedef __kernel_ssize_t ssize_t;
#endif
在不同平台上,其具有不同的定义:
typedef unsigned long __kernel_size_t;
typedef long __kernel_ssize_t;
typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
这就是两个类型的实际定义,从字面上意思来说:
Ssize_t = signed size_t
使用位置:
在对于缓冲区大小等等非负值的长度时一般使用 size_t;
而对于像
ssize_t (*read) (struct file *, char __user *, size_t, loff_t*);
ssize_t (*write) (struct file *, const char __user *, size_t,loff_t *);
ssize_t (*aio_read) (struct kiocb *, const struct iovec *,unsigned long, loff_t);
ssize_t (*aio_write) (struct kiocb *, const struct iovec *,unsigned long, loff_t);
可能失败返回< 0的函数时,则使用ssize_t;
ssize_t (*read) (struct file *, char __user *, size_t, loff_t*);
另外相似的一个类型: loff_t
定义如下:
#if defined(__GNUC__)
typedef __kernel_loff_t loff_t;
#endif
是一个long long 类型
#ifdef __GNUC__
typedef long long __kernel_loff_t;
#endif
跟踪linux源码得到以下宏:
#ifndef _SIZE_T
#define _SIZE_T
typedef __kernel_size_t size_t;
#endif
#ifndef _SSIZE_T
#define _SSIZE_T
typedef __kernel_ssize_t ssize_t;
#endif
在不同平台上,其具有不同的定义:
typedef unsigned long __kernel_size_t;
typedef long __kernel_ssize_t;
typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
这就是两个类型的实际定义,从字面上意思来说:
Ssize_t = signed size_t
使用位置:
在对于缓冲区大小等等非负值的长度时一般使用 size_t;
而对于像
ssize_t (*read) (struct file *, char __user *, size_t, loff_t*);
ssize_t (*write) (struct file *, const char __user *, size_t,loff_t *);
ssize_t (*aio_read) (struct kiocb *, const struct iovec *,unsigned long, loff_t);
ssize_t (*aio_write) (struct kiocb *, const struct iovec *,unsigned long, loff_t);
可能失败返回< 0的函数时,则使用ssize_t;
ssize_t (*read) (struct file *, char __user *, size_t, loff_t*);
另外相似的一个类型: loff_t
定义如下:
#if defined(__GNUC__)
typedef __kernel_loff_t loff_t;
#endif
是一个long long 类型
#ifdef __GNUC__
typedef long long __kernel_loff_t;
#endif
相关文章推荐
- datafile block block size :8192
- matlab&nbsp;size,length,numel函数的用…
- 基于嵌入式Linux的MPC850&nbspUSB 驱动程序的实现
- [嵌入式资料] 提高编程技巧的十大…
- 嵌入式Linux启动优化手记2 U…
- CS 与 BS 区别与联系
- 2009-2010网络最热的 嵌入式…
- 2009-2010网络最热的 嵌入式…
- 创建线程, 线程属性, stacksize …
- 嵌入式 linux下p…
- 调节matlab heap size
- T-Shirt Size Estimation
- FPGA嵌入式项目开发实战&nbsp;随书光盘…
- 嵌入式 Linux线…
- 嵌入式 内核中针对proc…
- 嵌入式 linux下p…
- 嵌入式 Linux 与linux启…
- DB_BLOCK_SIZE Initialization Pa…
- db_recovery_file_dest_size of 21…
- MATLAB中的length() size()&n…