64位平台转32位平台总结
来源:互联网 发布:网络攻击与防范 ppt 编辑:程序博客网 时间:2024/05/16 07:35
64位平台转32位平台总结
一般都是32位平台转到64位平台,可是我们刚好相。我们公司最近做的分布式文件系统,以前是在64位平台下代码,以为现在的服务器很少有32位平台,也就没有过多的考虑,现在由于客户需要,不得不修改至32位平台。
现在总结如下,共大家学习。
1) 数据类型的定义
一般我们都用typedef 定义数据类型
typedef unsigned char aol_u8_t;
typedef char aol_s8_t;
typedef unsigned short aol_u16_t;
typedef short aol_s16_t
typedef unsigned int aol_s32_t
typedef int aol_u32_t
typedef unsigned long aol_u64_t
typedef long aol_s64_t
这里最大的失误是:把64位定义成了long ,这就导致在32位平台上,64位定义成了32位。同时到处打印信息
printk(“ino: %lu /n”) 修改为
printk(“ino: %llu /n”)
typedef unsigned long long aol_u64_t
typedef long long aol_s64_t
2) atomic64_t 的修改
在64位中,atomic_64_t的实现是long类型,64位,而在32位中没有这样的相应的类型。
这是因为在atomic_t 的实现是汇编语言,前面加了LOCK_PREFIX
3) 同样的位设置操作,其类型是void* 类型,指针类型,在64位平台上是64位的,在32平台位上是32位。
由于我们在代码中定义位一般用来标识flag,一般定义成了
aol_u32_t flag;
或者定义成
aol_u64_t flag; 回导致问题产生。
修改的意见是:
unsigned long flag;
static __inline__ void set_bit(int nr, volatile void * addr)
{
__asm__ __volatile__( LOCK_PREFIX
"btsl %1,%0"
:"=m" (ADDR)
:"Ir" (nr));
}
4) Kmap的使用
由于在64位平台上,没有高端内存,也就是当获取一个page描述符指针,要获取其虚拟地址是,是直接通过page_address获取的
char* addr= page_address(page);
这在32位平台上如果是高端内存,我们知道是需要通过映射的:
char* addr = kmap(page);
当使用完时,需要释放:
kunmap(page);
还有一个问题需要注意的是: kmap的次数是有限制的,这是因为在高端内存的永久映射里面,只保留了4M的虚拟地址空间,所以只能映射1024个页面,当没有可以的虚拟地址时, kmap函数是可以睡眠的,直到有可以的虚拟地址。所以kmap使用一次不能超过1024个,负责会导致死锁。
- 64位平台转32位平台总结
- 32位与64位平台
- VS2013 32位平台切换到64位平台
- 32位平台代码向64位平台移植
- PHP 内置 函数 32 位 和 64 位平台兼容性问题
- 32位和64位平台锁大小比较
- Linux平台编译curl7.37.1(32位、64位)
- 将32位代码向64位平台移植
- 32位程序向64位平台移植的注意事项
- 32位-64为平台之随笔
- msdn之64位平台
- 将32位代码向64位平台移植的注意事项(转)
- (转)将32位代码向64位平台移植的注意事项
- win7 64位平台编译的程序在XP 32位平台无法运行的解决方法
- 将项目的平台由32位改为64位:VS2013修改编译平台的方法
- 32位平台和64位平台C代码的一个小差异
- 基于windriver开发驱动,64位平台和32位平台一次解决
- 32位linux平台和saloris平台compile warning总结参考
- 《代码大全》第二版 粗浅印象
- HTML+CSS实现合并图片的切割显示以及背景渲染
- 刚注册CSDN
- 12-31--Mage.php分析----Varien_Autoload::register()
- win7中用户账户控制
- 64位平台转32位平台总结
- 【血泪】SDL终于移植成功,并且在模拟器上跑起来了 花了
- 12-31--MAGENTO---强大的配置功能挖掘!!
- Linux内存管理之高端内存映射
- 经典
- TUN/TAP
- 2010-12-31--------------2011-1-9
- 别人收集的一些面试题目(1)
- 内嵌汇编的语法