<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MM_man的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MM_man</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MM_man]]></copyright><item><title><![CDATA[main()函数传递整数型参数的方法]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/103475684</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/103475684</guid><author>MM_man</author><pubDate>Tue, 10 Dec 2019 15:00:24 +0800</pubDate><description><![CDATA[void main(int argc, char **argv)

{

  .......

}

argc：传递参数总个数，包括可执行文件名

argv[0]：可执行文件名

argv[1]：第一个参数，...以此类推

argv[]中保存的参数是char型字符串，将字符串转为整型数字（如 argv[1] = "1"，转换成整型 1）的做法是：

（1）包含头文件：#include &lt...]]></description><category></category></item><item><title><![CDATA[指针数组与数组指针]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/103305991</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/103305991</guid><author>MM_man</author><pubDate>Fri, 29 Nov 2019 10:41:42 +0800</pubDate><description><![CDATA[指针数组：是一个数组，数组元素为指针类型。定义为：

         int *array[100]; //定义了一个数组元素数为100数组，每个元素是指针类型

数组指针：是一个指针，该指针指向的是一个数组，定义为：

         int (*array)[100]; //定义了一个指向数组的指针，该数组的元素数为100


...]]></description><category></category></item><item><title><![CDATA[sizeof(指针、数组、字符串)大小]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/103305934</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/103305934</guid><author>MM_man</author><pubDate>Fri, 29 Nov 2019 10:32:55 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;
int main(void)
{
    int a, b, c, d, d2, e, f, g;
    char str[100];
    int arry[100];
    char *string="abc";
    int *p = malloc(100);
    char *p2 ...]]></description><category></category></item><item><title><![CDATA[内存映射：mmap与ioremap]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/101107788</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/101107788</guid><author>MM_man</author><pubDate>Sat, 21 Sep 2019 14:58:57 +0800</pubDate><description><![CDATA[　　对于提供了MMU（存储管理器，辅助操作系统进行内存管理，提供虚实地址转换等硬件支持）的处理器而言，Linux提供了复杂的存储管理系统，使得进程所能访问的内存达到4GB。
　　进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET，在0x86中它等于0xC0000000)，3GB到4GB为内核空间。
　　1.不管是在用户空间还是在内核...]]></description><category></category></item><item><title><![CDATA[C程序中，删除文件指定字符、空格、逗号、换行符、Tab键等方法]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/100603743</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/100603743</guid><author>MM_man</author><pubDate>Sat, 07 Sep 2019 18:18:55 +0800</pubDate><description><![CDATA[int main(int argc, char **argv)
{
 ...
 /*system中不支持使用格式符%s,%d等，因此使用sprintf()先使用格式符转换，再将转换后的字符串存放在buffer中*/
 snprintf(buffer, sizeof(buffer), "cat '%s' | tr -d '\r''\n' &gt; temp_logo.txt",ar...]]></description><category></category></item><item><title><![CDATA[在内核中读文件大小的方法]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/100603713</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/100603713</guid><author>MM_man</author><pubDate>Sat, 07 Sep 2019 18:13:38 +0800</pubDate><description><![CDATA[方法一：使用struct kstat结构体和vfs_stat()函数，使用方法和功能类似于应用态的struct stat和stat()函数。
举例：读取文件
 struct kstat stat;
 char *file_path = "/text.txt";
 int file_size = 0;
 ret = vfs_stat(file_path, &amp;stat);...]]></description><category></category></item><item><title><![CDATA[编译出错，出现 vfs_read[******.ko] undefined !]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/100603683</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/100603683</guid><author>MM_man</author><pubDate>Sat, 07 Sep 2019 18:12:06 +0800</pubDate><description><![CDATA[出现类似问题的原因是锁使用的函数无符号导出，本例是因为linux-4.0以后的版本取消了vfs_read()的符号导出EXPORT_SYMBOL(vfs_read)
解决办法：
（1）使用fp-&gt;f_op-&gt;read()函数，但是使用这个，虽然可以编译通过，但是在加载时，fp-&gt;f_op-&gt;read的返回值是NULL，原因未找到；
（2）使用修改内核（不建议，会污染内核）：...]]></description><category></category></item><item><title><![CDATA[从txt文件中读数字字符串，将其转换为对应的整数，并写到二进制文件中]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/100603339</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/100603339</guid><author>MM_man</author><pubDate>Sat, 07 Sep 2019 18:09:35 +0800</pubDate><description><![CDATA[假设test.txt文件有以下内容：

0x00,0x12,0x00,0x00,0xc2,0x00,0x00,0xff,0x22,0x00,0xee,0x00,0x00,0x1d,0x00,0x00,0x12,0x00,0xcd,0x12,0x00,0x00,

0x12,0x00,0x45,0xde,0x00,0x00,0xff,0x00,0x00,0x12,0x00,0x00,0xff,0x0...]]></description><category></category></item><item><title><![CDATA[简单的摄像头自写驱动程序总结]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/80831305</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/80831305</guid><author>MM_man</author><pubDate>Wed, 27 Jun 2018 16:35:00 +0800</pubDate><description><![CDATA[框架：USB总线驱动程序的作用1.识别USB设备1.1分配地址1.2并告诉USB设备(setaddress)1.3发出命令获取描述符2.查找并安装对应的设备驱动程序3.提供USB读写函数usb总线驱动程序在我们接入USB设备的时候会帮我们构造一个新的usb_device.注册到总线里面来。    本驱动程序总共需要构造1个usb驱动结构体：usb_driver  /*用于操作接入的USB设备*/2...]]></description><category></category></item><item><title><![CDATA[insmod: error inserting 'vivi.ko': -1 Unknown symbol in module 问题解决办法]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/80323252</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/80323252</guid><author>MM_man</author><pubDate>Tue, 15 May 2018 15:10:41 +0800</pubDate><description><![CDATA[加载驱动时遇到：insmod: error inserting 'vivi.ko': -1 Unknown symbol in module的问题，在网上查了下，解决办法如下：1、用modinfo  ./vivi.ko | grep depend   找模块的依赖，结果如下depends:        videodev,videobuf-vmalloc,videobuf-core,v4l2-co...]]></description><category></category></item><item><title><![CDATA[C/C++基础知识：typedef用法小结]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/79970686</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/79970686</guid><author>MM_man</author><pubDate>Tue, 17 Apr 2018 10:09:09 +0800</pubDate><description><![CDATA[第一、四个用途用途一：定义一种类型的别名，而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如：char* pa, pb; // 这多数不符合我们的意图，它只声明了一个指向字符变量的指针， // 和一个字符变量；以下则可行：typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行，同时声明了两个指向字符变量的指针虽然：char *pa, *pb;也可...]]></description><category></category></item><item><title><![CDATA[void 与void*]]></title><link>https://blog.youkuaiyun.com/MM_man/article/details/79970019</link><guid>https://blog.youkuaiyun.com/MM_man/article/details/79970019</guid><author>MM_man</author><pubDate>Tue, 17 Apr 2018 09:34:06 +0800</pubDate><description><![CDATA[void关键字的使用规则：             1. 如果函数没有返回值，那么应声明为void类型；             2. 如果函数无参数，那么应声明其参数为void；             3. 如果函数的参数可以是任意类型指针，那么应声明其参数为void * ；              4. void不能代表一个真实的变量；void体现了一种抽象，这个世界上的变量都是“有类型”...]]></description><category></category></item></channel></rss>