Linux C
文章平均质量分 66
viewsky11
这个作者很懒,什么都没留下…
展开
-
BSD socket简易入门手册
BSD Socket 简易入门手册翻译:Wilbur Lang目录介绍类比 (什么是 socket ?)装上你的新电话(怎样侦听?)拨号 (如何调用 socket)谈话(如何通过 sockets 交谈)挂起(结束)世界语(交流的语言很重要)未来在你的掌握了(下一步?)介绍当你进入 UNIX 的神秘世界后,立刻会发现越来越多的东西难以理解。对于大多数人来说,BSD s原创 2013-11-28 10:49:57 · 1044 阅读 · 0 评论 -
linux设备驱动中的completion(kernel-4.7)
completion定义定义的目录:include/linux/completion.h/* * struct completion - structure used to maintain state for a "completion" * * This is the opaque structure used to maintain the state for a "completio原创 2017-02-23 00:42:21 · 4603 阅读 · 0 评论 -
hostapd_cli命令源码分析
hostapd提供了控制命令hostapd_cli,使用方法可以查看usage。源码中的main函数:int main(int argc, char *argv[]){ int warning_displayed = 0; int c; int daemonize = 0; if (os_program_init())//不同操作体统平台下执行不同的环境初始化原创 2017-02-15 14:33:43 · 7450 阅读 · 0 评论 -
wireless-tools源码分析-iwconfig
Wireless Tools包含了一下工具: iwconfig:设置基本无线参数 iwlist:扫描、列出频率,比特率,密钥等 iwspy:获取每个节点链接的质量(只能查阅与之相连的节点) iwpriv:操作Wireless Extensions 特定驱动 ifrename: 基于各种静态标准命名接口大多数 Linux 发行版本都在其网络初始化脚本中集成Wir原创 2017-02-23 22:12:08 · 5903 阅读 · 1 评论 -
wireless-tools源码分析-iwlist
iwlistiwlist主要用来显示无线网卡的一些附加信息。 iwlist的用法: useage: iwlist [interface] options scanning 扫描一定范围内的无线接入点和Ad-Hoc单元信息,包括ESSID,信号质量,频段以及无线模式等 frequency 频率 channel显示设备支持的频道及当前所在的频道 rate/bitrate 设备支持的速率原创 2017-02-24 00:07:40 · 5773 阅读 · 0 评论 -
linux内核代码特点
linux内核必须使用GNU的GCC编译器来编译,而GCC提供了很多的C语言扩展,这些扩展对优化,目标代码布局,更安全的检查等提供了很强的支持。因此,内核代码所使用的C语法并不完全符合ANSI C标准,只要有可能,内核开发者总是要用到GCC提供的C语言扩展部分。计算最大值和最小值: /* * ..and if you can't take the strict * types, you can原创 2017-09-13 16:25:05 · 745 阅读 · 0 评论 -
mqtt C客户端
Paho MQTT C客户端是一个使用标准C编写的流畅的MQTT。 实际上包含了两个C API,同步的和异步的,分别为MQTTClient和MQTTAsync。同步的API可以更简单更使用,执行完操作后,一些调用会被阻拦,编程也更容易;而在异步API没有调用的阻拦操作,所有API的调用都是通过会调来实现的,这使得API更适合有窗口环境的操作系统,许多应用没有主线程控制。linux环境: 在lin原创 2017-09-26 18:28:57 · 6772 阅读 · 0 评论 -
Linux open系统调用流程
1.概述 我们知道,Linux把设备看成特殊的文件,称为设备文件。在操作文件之前,首先必须打开文件,打开文件的函数是通过open系统调用来实现的。而简单的文件打开操作,在Linux内核实现却是非常的复杂。open函数打开原理就是将进程files_struct结构体和文件对象file相关联。那么具体是怎么实现的呢?让我们一起走进Linux内核文件打开流程。 2. 首先,通过系统调用sys_open转载 2017-09-11 17:08:34 · 4442 阅读 · 1 评论 -
pbc应用分析
pbc源码:https://github.com/cloudwu/pbchttps://blog.codingnow.com/2011/12/protocol_buffers_for_c.htmlpbc应用例子安装protobuf,源码:https://github.com/google/protobuf建立protobuf文件address.proto: syntax = "proto2";//原创 2017-09-30 17:57:22 · 1403 阅读 · 0 评论 -
libcoap的使用和CoAP协议分析一
libcoap是一个coap协议的lib库,使用方便,搭建coap快捷方便!libcoap提供了example,以下从example中分析coap协议的数据封装!libcoap安装编译之后,在example下生成 coap-server和coap-client 可执行文件。coap-server在命令行的usage信息 coap-client在命令行下的usage信息: 分析se原创 2017-12-29 17:01:30 · 12042 阅读 · 0 评论 -
openssl的AES128加密总结
AES加密基本原理: 1.把明文按照128bit拆分成若干个明文块。 2.按照选择的填充方式来填充最后一个明文块。 3.每一个明文块利用AES加密器和密钥,加密成密文块。 4.拼接所有的密文块,成为最终的密文结果。 AES支持三种长度的密钥: 128位,192位,256位 填充方式: NoPadding: 不做任何填充,但是要求明文必须是16字节的整数倍。PKCS原创 2018-01-05 17:02:49 · 10733 阅读 · 1 评论 -
u-boot分析一
同步于简书: https://www.jianshu.com/p/c60cf237ffd1 以及个人博客: https://hades2013.github.iou-boot分析以ar9331和ar953x 的为例。 获取u-boot源码git clone https://github.com/pepe2k/u-boot_mod.git 一般u-boot的初始化过程: - 硬...原创 2018-04-25 17:14:07 · 545 阅读 · 0 评论 -
u-boot分析二
继续分析编译过程 boot编译的方式是将各个目录下的源码编译成.o,然后通过mips-linux-uclibc-ar 命令创建成静态库, ./lib_bootstrap/libbootstrap.a ./cpu/mips/libmips.a ./board/atheros/board955x/libboard955x.a ./lib_mips/libmips.a ./lib_g...原创 2018-04-26 13:46:17 · 295 阅读 · 0 评论 -
u-boot分析三
继续分析,u-boot怎么实现从网页加载固件实现web升级呢!是嵌入式了uip小型web服务器,可以参看manfeel的博文,在u-boot上移植uip的过程: https://blog.csdn.net/manfeel/article/details/13096075现分析u-boot_mod中的httpd的代码: u-boot上电初始化之后,进入board_init_r,如果想要通过...原创 2018-04-28 15:25:40 · 562 阅读 · 1 评论 -
ubuntu-16.04 qemu 嵌入式arm模拟
下载内核源码下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发。另一种是直接到内核社区下载稳定版本(详见:https://www.kernel.org/pub/linux/kernel/v4.x/)。下面演示从Linux kernel主线下载代码进行编译。git clone git://git.kernel.org/pub/scm/linux/kernel/git/t...原创 2018-05-16 15:08:32 · 3438 阅读 · 0 评论 -
plc(Power Line Communication)通信测试程序
plc(Power Line Communication)通信测试程序 plconfig.c /* plconfig.c version 0.2 Source code for Intellon-based Powerline bridge configuration tool Copyright (C) 2002-2003 Manuel Kasper <...原创 2018-05-28 09:47:12 · 1632 阅读 · 0 评论 -
rpcgen的简单讲解及例子程序
rpcgen 简介rpcgen可以自动生成RPC服务器程序的大多数代码,它的输入为一个规格说明文件,它的输出为一个C语言的源程序。规格文件(*.x)包含常量、全局数据类型以及远程过程的声明。Rpcgen产生的代码包含了实现客户机和服务器程序所需要的大部分源代码。他包括参数整理、发送RPC报文、参数和结果的外部数据表示以及本地数据表示的转换等。不过在由rpcgen生成的源文件中,没有过程的具体实...原创 2018-05-28 11:14:33 · 3793 阅读 · 0 评论 -
模拟网络驱动snull
snull.h文件/* * snull.h -- definitions for the network module * * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet * Copyright (C) 2001 O'Reilly & Associates * * The source code in this fil原创 2017-02-28 23:45:19 · 640 阅读 · 0 评论 -
little kernel分析
little kernel做为Android系统的bootloader,最早用google工程师实现,其后由高通,MTK等芯片厂商做了各自平台的适配。 lk的主要功能:初始化硬件模块,如时钟,中断,UART,USB,LCD,PMIC,eMMC/UFS等。 更新cmdline。其中重要的是区分启动模式。 选择和更新device tree。 设置好系统状态,跳转到kernel。 MMU =原创 2016-12-28 12:52:22 · 12981 阅读 · 1 评论 -
每天分析一段linux内核代码---<linux/sched.h>
#ifndef _SCHED_H#define _SCHED_H#define NR_TASKS 64 // 系统中同时最多任务(进程)数。#define HZ 100 // 定义系统时钟滴答频率(1 百赫兹,每个滴答10ms)#define FIRST_TASK task[0] // 任务0 比较特殊,所以特意给它单独定义一个符号。#define LAST_TASK task转载 2014-08-13 09:31:20 · 1969 阅读 · 0 评论 -
每天一个了linux库函数——opendir()
相关函数:open, readdir, closedir, rewinddir, seekdir, telldir, scandir头文件:#include #include 定义函数:DIR * opendir(const char * name);函数说明:opendir()用来打开参数name 指定的目录, 并返回DIR*形态的目录流, 和open()类似, 接原创 2014-08-13 09:38:39 · 2454 阅读 · 0 评论 -
每天一段linux内核代码——<kernel/sched.c>
#include #include #include struct thread_t SECTION(".task0") ALIGN(PAGE_SIZE) task0; struct thread_t *current = &task0;static struct list_t *ptask_list = &(task0.link);原创 2014-08-14 09:27:27 · 1358 阅读 · 0 评论 -
libhttpd的使用
LibHttpd是一个开源轻量级嵌入式Web server,LibHttpd实现了下述功能:实现了HTTP的子集;使用表格技术自动处理Html Form数据;产生的内容既可以是静态的网页,也可以是调用C函数动态产生的(callback); LibHttpd提供API,利用这些API,用户可以很方便地将自己的Web内容加入到程序当中。libhttpd中带有英文的使用手册,也增加了使用实例源码原创 2016-09-13 10:46:05 · 2124 阅读 · 0 评论 -
wifidog中的wdctl命令
新的wifidog源码增加了wdctl的命令,看了一下,是一个很好命令行的模板。收藏! wdctl.h文件#ifndef _WDCTL_H_#define _WDCTL_H_#define DEFAULT_SOCK "/tmp/wdctl.sock"#define WDCTL_UNDEF 0#define WDCTL_STATUS 1#define WDCTL_S原创 2016-08-23 11:45:55 · 2768 阅读 · 0 评论 -
http和https
http和https的区别概念上参看: http://blog.csdn.net/mingli198611/article/details/8055261浏览wifidog代码时,发现C代码反映的http和https请求的区别,拷贝过来收藏!具体包含的头文件去wifidog中查看,以下是主要代码:wifidog-gateway/src/sample_http.h#ifndef _SIMPLE_HT原创 2016-08-23 12:39:10 · 2967 阅读 · 0 评论 -
wifidog源码分析(一)
网上已有源码详细的源码分析,此分析仅做个人记录 从main开始wifidog-gateway/src/gatway.c/* Reads the configuration file and then starts the main loop */int //读取配置文件,也就是/etc/wifidog.conf中的各项配置gw_main(int argc, char原创 2016-09-08 14:18:55 · 1918 阅读 · 0 评论 -
configure的参数记录
交叉编译一个软件时被configure的一个参数给绊住了,浪费了时间!因为没有仔细查看INSTALL和configure的参数配置。configure –help还是十分有用的!`configure' configures this package to adapt to many kinds of systems.Usage: ./configure [OPTION]... [VAR=VALUE]原创 2016-09-08 14:23:03 · 1187 阅读 · 0 评论 -
网卡驱动
网卡驱动:载波检测-netif_carrier_ok/netif_carrier_on/netif_carrier_off网卡在物理上具有载波侦听的功能,当网络连接完整或者网络链接断开时,网卡芯片硬件会自动设置寄存器标志位来标识。如网线链接断开的时候,会将LinkSts清位;重新链接网线,则硬件自动将此位置位。这样,在网卡驱动中读写该位信息就可一判断网络是否链接通路。网卡驱动程序通过netif_c原创 2016-11-05 19:09:16 · 922 阅读 · 0 评论 -
web服务器boa代码分析
#include "boa.h"#include /* globals */int backlog = SO_MAXCONN; /*监听数目*/time_t start_time; /*初始时间*/int sighup_flag = 0; /* 1 => signal has happened, needs原创 2016-10-28 16:36:31 · 1087 阅读 · 0 评论 -
nodogsplash分析
git出nodog的源码: https://github.com/nodogsplash/nodogsplash 查看nodog的wikiNodogsplash offers a simple way to provide restricted access to an internet connection. It is derived from the codebase of the Wif原创 2016-11-09 23:25:06 · 2030 阅读 · 0 评论 -
libhttpd深入分析
libhttpd是一个小型的嵌入式web server,在开发过程中,如果需要web server,但仅仅需要实现固定两三个web网页服务及处理小部分http请求,则可以将Libhttpd嵌入开发中,生成动态库文件使用。 libhttp:http://www.hughes.com.au/products/libhttpd/libhttpd提供了良好的API,可以实现web server的静态和动态原创 2016-11-11 12:48:46 · 4533 阅读 · 0 评论 -
链表例子程序
链表应用1:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <signal.h>#include <pthread.h>#include <semaphore.h>#include <unistd.h>typedef int pri_spin_t;pri_spin_t spin原创 2016-11-14 11:19:03 · 442 阅读 · 0 评论 -
wifidog源码http.c文件分析
wifidog源码中的http.c文件,该文件是实现认证和页面跳转操作:#define _GNU_SOURCE#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <string.h>#include <unistd.h>#include <syslog.h>#include <sys/types.h>#in原创 2016-11-14 12:04:35 · 1857 阅读 · 0 评论 -
boa源码分析
boa应用程序从src/boa.c开始运行,进入关键的select_loop中,boa将处于无阻塞轮询运行服务中。/* boa里边有三个请求链表* request *request_ready = NULL; /* ready list head */* request *request_block = NULL; /* blocked list head */* request *re原创 2016-11-15 11:23:22 · 3936 阅读 · 1 评论 -
Linux C进程与多线程
进程和程序的区别进程和程序的区别可以理解为,进程是活动的程序,而程序是一个代码的集合。进程是加载到内存中的程序,而程序没有加载到内存中,之在磁盘上保存着。下图是进程的结构,而程序进包含代码段 +-------------+ | 代码段 | +-------------+ | 堆栈段 | +-------------+ | 数据段 | +-----转载 2016-11-15 16:42:36 · 1912 阅读 · 0 评论 -
adb和adbd分析
在adb中有三个模块,分别是adbd,adb server,adb client,如下表所示: module name process name run as adbd adbd device/emulator adb server windows: adb.exe linux: adb client adb client such as eclipse,原创 2016-12-26 22:39:00 · 31237 阅读 · 2 评论 -
Trapping Rain Water 收集雨水 C/C++
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], ...原创 2018-06-04 18:52:31 · 915 阅读 · 0 评论