![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Programming
baishuwei
love movie
展开
-
写自己的函数直接调用Linux system call
众所周知,Linux系统调用是访问Linux内核的必经之路。作为上层软件开发着来说,一般无须考虑自己的程序是如何通过Linuxkernel system call层,因为这是libc的任务,程序员只需要知道libc提供的接口就可以了。但是,有时候为了定制或实现新的LibC一类的需要调用systemcall的软件包或这软件,了解如何写自己的可以直接调用Linux系统调用的函原创 2008-09-02 18:47:00 · 5383 阅读 · 0 评论 -
MISRA C指导指南解读系列5(MISRA C规则33-45)
2.1. 操作符33.&&和||右边的操作数不应该含有边缘影响(R) int myfunc1(void);int myfunc(void) { int is; int x; if( is && ( x ++ == 3))原创 2009-04-28 11:30:00 · 1269 阅读 · 0 评论 -
C语言中逻辑运算符(&&,||,!)和位运算符号(&,|,^)的区别
1. C语言中逻辑运算符(&&,||,!)和位运算符号(&,|,^)的区别在C语言中,编程者经常混淆两组运算符:(&&,||,!)和(&,|,^)。第一组是逻辑运算符,它的操作数是布尔型,而第二组则是位运算符,其操作数是位序列。在布尔型操作数中,只有两个数值,0或1。C语言规定,在逻辑运算中,所有的非0数值都看做1处理。而位序列则可以是有无符号的字符型,整型,长短整型等。在位运算原创 2009-05-05 13:40:00 · 56616 阅读 · 5 评论 -
MISRA C指导指南解读系列7(MISRA C规则68-86)
2.1. 函数68.函数的声明应该是在文件的范围内(R) 例如 void myfunc(void) { extern int call(void); /* 违反规则68 */} 69.函数不能使用可变参数格式的样式(原创 2009-05-04 13:58:00 · 1573 阅读 · 0 评论 -
MISRA C指导指南解读系列8(MISRA C规则87-100)
2.1. 预处理87.文件中#include语句前面只能是其它的预处理语句或注释(R) 例如: static int a; #include /*与规则87冲突*/ ……88.非标准字符不能出现在#include语句的头文件名称中(R)原创 2009-05-05 13:41:00 · 1731 阅读 · 0 评论 -
MISRA C指导指南解读系列10(MISRA C规则114-127)
2.1. 标准库114.保留字和标准库函数不能重新定义或取消定义(R) 在C语言中存在一些保留标识符和函数名,在应用软件中,不能随意重新定义或者取消这些定义。例如在C语言中,存在一些重要的宏和变量:__LINE__,__FILE__,__FILE__,__DATA__,__TIME__,__STDC__,errno等。#define __LINE原创 2009-05-07 15:08:00 · 2034 阅读 · 1 评论 -
MISRA C指导指南解读系列9(MISRA C规则101-113)
2.1. 指针和数组101.不能对指针进行算术操作(A) 本条的目的是为了防止指针指向无效的内存空间。例如void myfunc(void) { int *a; int *b; int arr[10]; a = arr; a ++; /* 与规则冲突 */原创 2009-05-06 16:11:00 · 1392 阅读 · 0 评论 -
MISRA 2004 (先前作者写的MISRA文档是基于 1998版本,这个是基于更新的MISRA 2004版本)
汽车行业软件可靠性联盟(MISRA:Motor Industry Software Reliability Association)的使命为了提高车辆系统中软件的安全性和可靠性,是对汽车工业的软件应用和开发提供相应支持和帮助。MISRA-C的早期目的是为了指导汽车行业中C语言软件的开发,但是,从1998年,MISRA-C已经在汽车工业、航空航天、医疗设备、以及其它工业环境中得到应用和发展。MI原创 2009-09-17 21:48:00 · 1415 阅读 · 0 评论 -
嵌入式实时Hypervisor:XtratuM (8)
1.1 内存管理内存管理主要包含两个方面,一个是内存分配,另一个是内存映射。在XtratuM系统开发和移植过程中,内存分配问题主要体现在每个域或客户操作系统内部,例如PaRTiKle系统采用TLSF(Two-Level Segregate Fit)算法。关于TLSF算法,读者可以参考[36]。本节的内容主要包含域中内存使用类别和内存映射机制。现阶段,在Xtratu原创 2009-10-30 00:07:00 · 990 阅读 · 0 评论 -
MISRA C指导指南解读系列4(MISRA C规则20-32)
2.1. 声明和定义20.所有的对象和函数标识符在使用前必须声明(R)21.内部标识符不能与外部标识符具有相同的名称,从而隐藏的外部标识符(R) 例如 static int a; int myfunc(void) { int a; /* 违反该规则 */}22.对象的声明应该在原创 2009-04-28 10:59:00 · 1529 阅读 · 0 评论 -
二进制浮点数向十进制浮点数的转换
二进制浮点数向十进制浮点数的转换IEEE给出了一套浮点数值的标准,即IEEE 754。该标准给出了单精度(32位)和双精度(64位)浮点数值的表示方法以及如何对其进行操作。本文简单的给出了从二进制的浮点数到十进制浮点数的转换算法。根据IEEE 754,浮点数的二进制存储格式被分为三个部分:符号位,指数位和数据位。单精度和双精度浮点数的区别除了总位数长度的区别之外就是基于该长度对其三个原创 2009-04-22 21:09:00 · 16464 阅读 · 2 评论 -
如何产生依赖文件 Linux C programming
在linux 编程中, makedepend 是一个很重要的工具,它可以根据#include #ifdef #if等宏定义获取源文件所要依赖的头文件并且保存到相应的文件,从而作为源文件的预处理来提高文件编译速度。实际中,有两种方法获取这种依赖关系,一种是直接使用makedepend工具,另外一种是通过gcc -C 获取。 我们分别简单介绍二者的使用。这是一个简单的源文件,使用来测试原创 2008-09-03 13:23:00 · 1779 阅读 · 0 评论 -
欲善其工,先利其器--UML介绍
UML是Unified Modeling Language(统一建模语言)的缩写,语言的创建者是想建立一种标准开发语言,这种语言的目的不仅是能够让程序开发的人员看懂,即使好组织业务人员也可以看懂,从而加速了项目相关人员的(需求方,设计者,开发者,测试者,新member)都可以很快的理解项目。它是联系项目开发过程中一个有力的桥梁,鉴于其在项目的开发中的重要地位,本人才从这里给大家强力推荐UML的学习转载 2008-06-23 19:46:00 · 726 阅读 · 0 评论 -
缓存溢出问题简述
缓存溢出 缓存溢出(Buffer overflow),是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符来填满一个域,通常是内存区地址。这篇文章就是讲解简单的缓存溢出问题。文章以x86_32 和 linux 系统平台为蓝本。为了介绍缓存溢出,数据的存储地址、主要的汇编指令、重要的寄存器等内容都要讲解。 1. 变量存储在C语言中,变量属性有很多中,但是原创 2008-11-02 19:21:00 · 3561 阅读 · 0 评论 -
void (*f(int, void (*)(int)))(int) 函数解析
函数指针 今天与几个同学看到了一个函数指针定义: void (*f(int, void (*)(int)))(int) 以前在C trap pit fails里面见过,但是文章里面介绍的很详细,但是往往使初学者抓不到重点, 结果弄的一头污水。这里就简单介绍一下这中函数指针的定义方法。 什么是函数指针? 这个问题从定义的角度来看很好理解,指向函数的指针就原创 2008-11-03 15:38:00 · 12764 阅读 · 5 评论 -
C 语言中 const 关键字介绍
const的使用虽然比较低,但是在笔试中却是一个频率很高的考点,那么如何迅速掌握和理解const呢?在这里给大家介绍一种简单的舍去法。就是看到const的时候,1)首先舍弃const, 得到一个普通的声明;2)然后舍弃const右面的const标志标志以及其它的关键字;3)接下来就是将const右面所有的*和变量用一个新变量代替,单个字符不用被取代,那么这个新变量就是const作用对象。例原创 2008-11-16 14:31:00 · 812 阅读 · 0 评论 -
Real-Time Linux 系统
在没有介绍我们的主角之前,我们先来看看什么是实时系统和Linux系统。这里的实时系统指的是实时操作系统,通常情况下,操作系统从实时性能上被分为三种,硬实时操作系统,软实时系统以及非实时系统。通常情况下,硬实时操作系统对时间要求严格,任何硬实时任务的失败都可能导致无法估测的损失和伤害,这种操作系统通常被用在航空,国防,控制等领域。软实时系统的任务失败较之硬实时系统的危害性要小许多,通常我们用到的多原创 2009-02-18 17:14:00 · 5128 阅读 · 0 评论 -
MISRA C指导指南解读系列2(MISRA 规则 1- 10)
1. MISRA C:1998规则MISRA C 1998共包含17种类别,127条规则,这一节中,我们将详细介绍这17种分类和127条规则,其中R—Request,A—Advisory 2.1. 环境1.所有的代码应该遵循ISO 9899标准,不允许扩展(R) typedef void (*myFptr)(); void foo()原创 2009-04-20 17:23:00 · 2633 阅读 · 0 评论 -
MISRA C指导指南解读系列3(MISRA C规则11-19)
2.1. 标识符11.标识符不能依赖于多于31个字符的意义。编译器和链接器应该可以支持31个字符的外部标识符(R)12.不同域名空间的标识符的名称应该具有不同的拼写,结构体成员除外(A)2.2. 类型13.基本的类型,char,int,short,long,double,和float不应该被使用。应该使用编译器通过typedef定义原创 2009-04-21 16:43:00 · 2224 阅读 · 0 评论 -
嵌入式实时Hypervisor:XtratuM (10)
1.1.1.1 FIFO/XM V2.0与FIFO/XM V1.0相比,FIFO/XM V2.0有两处改进,1)Lock-Free机制的使用避免了阻塞竞争机制的使用,2)将FIFO模块从XtratuM内核中分离。在FIFO/XM V1.0中,基于阻塞机制的信号量和中断屏蔽被使用,从而降低了系统的吞吐率和事件相应速度。尤其是低优先级域可能阻塞高优先级域,从而引起实时域原创 2009-10-30 00:09:00 · 965 阅读 · 0 评论