随笔分类 -  Linux

上一页 1 ··· 8 9 10 11 12 13 下一页
摘要:内核同步:主要是防止多核处理器同时访问修改某段代码,或者在对设备驱动程序进行临界区保护。主要有一下几种方式:1. Mutex(互斥)头文件:#include <linux/mutex.h>初始化方法:DEFINE_MUTEX(name);或者void mutex_init(struct mutex *lock);使用方法:void mutex_lock (struct mutex *lock);Tries to lock the mutex, sleeps otherwise.Caution: can't be interrupted, resulting in proce 阅读全文
posted @ 2011-04-24 19:49 hnrainll 阅读(1645) 评论(0) 推荐(0)
摘要:利用c.vim插件,你可以实现添加文件头 添加注释 插入一些代码片段 语法检查 读函数文档 注释代码块这一插件的作者是Fritz Mehner,目标就是打造程序员流畅的编辑环境。这一插件还能完成:Statement oriented editing of C / C++ programs Speed up writing new code considerably. Write code and comments with a professional appearance from the beginning. Use code snippets 接下来我们对这一插件详细介绍.3 安装插件S 阅读全文
posted @ 2011-04-24 19:37 hnrainll 阅读(1969) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/minico/archive/2007/12/15/1938050.aspx1.官方网站下载最新的gvim7.1 win32,然后选择完全安装;我是安装在d:\vim目录下面,安装后的目录结构如下:D:\VIM├─vim71│ ├─autoload│ ├─colors│ ├─compiler│ ├─doc│ ├─ftplugin│ ├─indent│ ├─keymap│ ├─lang│ ├─macros│ ├─plugin│ ├─spell│ ├─syntax│ ├─tools│ └─tutor└─vimfiles├─after├─autoloa 阅读全文
posted @ 2011-04-24 00:33 hnrainll 阅读(599) 评论(0) 推荐(0)
摘要:进行有效编辑的七种习惯 Bram Moolenaar 如果你的很多时间是用来敲纯文本,写程序或HTML,那么有效地使用一个好的编辑器能节省你不少时间。这篇文章里的指导和提示将有助于你更快工作,更少犯错误。 文中采用开源文本编辑器Vim(Vi IMproved)说明有效编辑的思想,但这些思想也适用于其他编辑器。择合适的编辑器只是有效编辑的第一步,对于哪个编辑器更好的讨论将占很大地方,这里就不提了。如果你不知道该用哪个编辑器,或者对现在所使用的不太满意,不妨试试Vim;你是不会失望的。 第一部分:编辑一个文件 快速定位 编辑中大部分时间是花费在阅读、查错和寻找应该进行编辑的地方上,而不是插入新文字 阅读全文
posted @ 2011-04-23 23:35 hnrainll 阅读(1681) 评论(0) 推荐(0)
摘要:最近使用sqlite较多,这东西现在是越用越着迷,不管是工作或者个人自娱自乐写东西,只要有数据存储首先就想到了sqlite,我一直对C/S模式的数据存储很反感,记得在知道sqlite之前的很长一段时间里一直用的是xml来存数我的数据,我喜欢将数据存储在单一文件里,我可以随时把数据带在身上,而且它们兼 阅读全文
posted @ 2011-04-22 10:44 hnrainll 阅读(15789) 评论(0) 推荐(0)
摘要:驱动程序和用户程序可不一样,它是作为一个模块连接到内核模块来运行的,运行在内核空间里面。所以要运行我们自己构造的模块,需要自己的系统已经配置好内核树,然后把目标模块和内核树连接起来运行!可以查看一下自己的电脑有没有配置内核树,可以到 /lib/modules/2.6.35-22-generic目录下面,看看有没有build这个文件夹,如果有,说明你已经有内核树了,如果没有,就自己构建内核树吧。内核树构建过程安装编译内核所需要的软件(也可不装,除非你要用 make menuconfig,用make oldconfig不要)sudo apt-get install build-essential 阅读全文
posted @ 2011-04-22 08:35 hnrainll 阅读(2389) 评论(0) 推荐(0)
摘要:Linux系统调用实验【实验目的】理解系统调用的概念,熟悉系统调用的用法。【实验设备】装有Linux操作系统的PC机一台。【实验要求】编程创建系统调用mycall(),实现功能是显示字符串到屏幕上。编译2.4.18内核,用新内核引导系统。编程调用自己创建的系统调用。【实验原理】操作系统是用户与计算机之间的接口,用户通过操作系统的帮助,可以快速、有效和安全可靠地使用计算机系统中的各种资源来解决自己的问题。为了使用户方便的使用操作系统,OS向用户提供了“用户与操作系统的接口”。这种接口支持用户与操作系统之间进行交互,这些接口可以被分为命令和程序接口两种。前者直接提供给用户在键盘终端上使用;后者则是 阅读全文
posted @ 2011-04-21 20:29 hnrainll 阅读(2399) 评论(0) 推荐(0)
摘要://信号量---线程间通信//“生产者消费者” 问题#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<semaphore.h>#include<pthread.h>#define msleep(x) usleep(x*1000)#define PRODUCT_SPEED 3 //生产速度#define CONSUM_SPEED 1 //消费速度#define INIT_NUM 3 //仓库原有产品数#define TOTAL_NUM 10 //仓库容量sem_t 阅读全文
posted @ 2011-04-21 19:43 hnrainll 阅读(6996) 评论(1) 推荐(0)
摘要:SYNOPSIS #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value);//初始化信号量 int sem_wait(sem_t * sem);//等待信号,获取拥有权 int sem_trywait(sem_t * sem); int sem_post(sem_t * sem);//发出信号即释放拥有权 int sem_getvalue(sem_t * sem, int * sval); int sem_destroy(sem_t * sem);//注销信号量,在linux中 阅读全文
posted @ 2011-04-20 16:55 hnrainll 阅读(30764) 评论(0) 推荐(3)
摘要:ioctl函数本函数影响由fd参数引用的一个打开的文件。#include<unistd.h>int ioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高速缓存操作路由表操作流系统下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型:类别Request说明数据类型套接口SIOCATMARKSIOCSPGRPSIOCGPGRP是否位于带外标记设置套接口的 阅读全文
posted @ 2011-04-20 16:21 hnrainll 阅读(706) 评论(0) 推荐(0)
摘要:#include<stdlib.h>#include<stdio.h>#include<unistd.h>#include<pthread.h>void clean_fun1(void * arg){ printf("this is clean fun1\n");}void clean_fun2(void * arg){ printf("this is clean fun2\n");}void * thread_fun(void * arg){ pthread_cleanup_push(clean_fun1 阅读全文
posted @ 2011-04-20 12:31 hnrainll 阅读(4489) 评论(0) 推荐(0)
摘要:1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式 GUI 有:M 阅读全文
posted @ 2011-04-19 18:56 hnrainll 阅读(287) 评论(0) 推荐(0)
摘要:原地址:http://www.ibm.com/developerworks/cn/linux/l-linuxboot/index.html早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的简化。让我们先从高级的视角来查看 Linux 引导过程,这样就可以看到整个过程的全貌了。然后将回顾一下在各个步骤到底发生了什么。在整个过程中,参考一下内核源代码可以帮助我们更好地了解内核源代码树,并在以后对其进行深入分析。概述图 1 是我们在 20,000 阅读全文
posted @ 2011-04-19 18:21 hnrainll 阅读(290) 评论(0) 推荐(0)
摘要:http://www.ibm.com/developerworks/cn/IBM developworks有很多很经典的资料 阅读全文
posted @ 2011-04-13 17:22 hnrainll 阅读(441) 评论(0) 推荐(0)
摘要:程序1(test1.l):%{#include <stdio.h>%}%% begin printf("Started\n");hello printf("Hello yourself!\n");thanks printf("Your welcome\n");end printf("Stopped\n");%%在linux中:第一步:flex test1.l第二步:gcc -o test1 lex.yy.c -lfl第三步:运行./test1 输入begin 程序将在屏幕上打印Started.程序2:( 阅读全文
posted @ 2011-04-12 21:58 hnrainll 阅读(277) 评论(0) 推荐(0)
摘要:源地址: http://www.ibm.com/developerworks/cn/linux/sdk/lex/index.htmlLex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。LexLex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。当 Lex 接收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。它一次 阅读全文
posted @ 2011-04-12 21:08 hnrainll 阅读(522) 评论(0) 推荐(0)
摘要:本节我们讨论一个Makefile中的一个重要的特殊目标:伪目标。伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签。使用伪目标有两点原因:1.避免在我们的Makefile中定义的只执行命令的的目标(此目标的目的为了执行执行一系列命令,而不需要创建这个目标)和工作目录下的实际文件出现名字冲突。2.提高执行make时的效率,特别是对于一个大型的工程来说,编译的效率也许你同样关心。以下就这两个问题我们进行分析讨论:1.如果我们需要书写这样一个规则:规则所定义的命令不是去创建目标文件,而是使用make指定具体的 阅读全文
posted @ 2011-04-12 20:56 hnrainll 阅读(17272) 评论(0) 推荐(3)
摘要:用途生成一个与输入流的简单语法分析相匹配的 C 或 C++ 语言程序。语法lex [ -C ] [ -t ] [ -v| -n ] [ File... ]描述lex 命令读取 File 或标准输入,生成 C 语言程序并将它写到一个名为 lex.yy.c 的文件中。这个文件,lex.yy.c ,是一个兼容的 C 语言的程序。一个 C++ 编译器也能够编译 lex 命令的输出。-C 标志将输出文件重命名为 lex.yy.C 供 C++ 编译器使用。由 lex 命令生成的 C++ 程序可使用 STDIO 或 IOSTREAMS。如果在 C++ 编译中,cpp 定义 _CPP_IOSTREAMS 是真 阅读全文
posted @ 2011-04-12 20:23 hnrainll 阅读(2268) 评论(0) 推荐(0)
摘要:摘要:本期的目的是向大家介绍shell的概念和基本原理,并且在此基础上动手做一个简单shell解释器。同时,还将就用到的一些 linux环境编程的知识做一定讲解。本文适合的读者对象 对linux环境上的c语言开发有一定经验;对linux环境编程(比如进程、管道)有一点了解。概述本章的目的是带大家了解shell的基本原理,并且自己动手做一个shell解释器。为此,首先,我们解释什么是shell解释器。其次,我们要大致了解shell解释器具有哪些功能;最后,我们具体讲解如何实现一个简单的 shell 解释器,并对需要用到一些 linux环境编程的知识做一定讲解,并提醒你如果想深入掌握,应该去看哪些 阅读全文
posted @ 2011-04-12 19:52 hnrainll 阅读(3520) 评论(0) 推荐(0)
摘要:下面列举相关文件/etc/sysconfig/i18n$ cat /etc/sysconfig/i18nLANG="en_US.UTF-8"SYSFONT="latarcyrheb-sun16"复制代码我的是英文环境,所以整体语系是en_US.UTF-8,可以在修改相关的环境变量进行设定。有人会纳闷?为什么会是i18n呢?internationalization,不过这个单词太长啦。所以把中间18个单词用18来代替了。/etc/profile这个文件比较有统一性。几乎所有版本的*NIX都会有。同时对所有的用户都有效。里面设置了一些比较重要的环境变量。PA 阅读全文
posted @ 2011-04-12 15:13 hnrainll 阅读(3192) 评论(0) 推荐(0)

上一页 1 ··· 8 9 10 11 12 13 下一页