- 博客(15)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 linux下I/O复用与poll实际使用(四)
poll事件读写,server端代码见下,client端代码见(三)/*poll 与 select 很类似,都是对描述符进行遍历,查看是否有描述符就绪。如果有就返回就绪文件描述符的个数将。poll 函数如下: #include <poll.h> int poll(struct pollfd *fdarray, unsigned long nfds, int timeou...
2018-10-23 19:57:56 167
原创 linux下I/O复用与epoll实际使用(三)
前两章已经学习了epoll根据前两篇的学习,基本掌握了epoll事件,但对于同时监控读写事件还未涉及到,故作一次补充server端#include<stdio.h>#include<arpa/inet.h>#include<unistd.h>#include<stdlib.h>#include<sys/socket.h>#i...
2018-10-23 19:55:26 189
原创 linux下I/O复用与epoll实际使用(二)
上一节《linux下I/O复用与epoll实际使用(一)》主要讲解了epoll的原理,这一节结合socket的编程,详解select与epoll编程示例。一、socket编程在TCP/IP协议中“IP地址+TCP或者UDP端口号”唯一标识网络通讯中的一个进程,"IP+端口号"就称为socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,name两个socket组成的soc...
2018-10-18 19:41:56 206
转载 信号量、互斥锁、条件变量区别
转载自https://www.cnblogs.com/lonelycatcher/archive/2011/12/20/2294161.html信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlo...
2018-10-11 14:09:59 384
原创 linux下I/O复用与epoll实际使用(一)
一、背景I/O多路复用有很多种实现,在linux上,2.4内核前主要是select和poll,从2.6内核正式引入epoll以来。epoll已经成为目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是从本质上却没有什么区别。二、选择epoll的原因select的缺陷高并发的核心解决方案是1个线程处理所有连接的“等待消息准备好”,这一点上epoll和select是无争议的。...
2018-10-08 20:55:27 335 1
原创 dpdk学习(1)----程序代码创建流程
关于dpdk的初始化rte_eal_init()有关pcie部分的关系static struct rte_driver rte_opal_card_driver={.type=PMD_PDEV,.init=rte_opal_card_init,};PMD_REGISTER_DRIVER(rte_opal_card_driver);#define PMD_REGIST
2018-01-16 16:58:53 642
转载 linux R8169网卡驱动驱动笔记(二)----Linux MSI中断
1.什么是MSI中断 Message Signaled Interrupts 是pci2.2中提出来的一种新的中断形式。后续有msi-x扩展。 msi以及msi-x这种中断形式的一个最主要的特点就是,它在系统的特定地址做一个memory write transaction,将一个系统约定的数据写入,以此通知CPU一个中断产生了。这个特点带来的最主要的好处就是脱离了传统的inte
2017-10-26 16:42:04 2689
转载 rtl8169网卡驱动
原文:http://www.bubuko.com/infodetail-844822.html本文通过学习RealTek8169/8168/8101网卡的驱动代码(drivers/net/r8169.c),梳理一下Linux下网卡的收包过程。在下水平相当有限,有不当之处,还请大家斧正^_^ 驱动的初始化如下的rtl8169_init_module函数
2017-10-19 20:16:32 2022
原创 关于Linux网络设备rtl8169代码分析笔记(一)-------MMIO
关于Linux网络设备rtl8169代码分析笔记(一)——-MMIO 在probe卡过程中涉及到RTL_W8()即对MMIO寄存器进行read write操作。下面是对MMIO一些基础知识。 MMIO(Memory mapping I/O)即内存映射I/O,它是PCI规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从处理器的角度看,内存映射I/O后系统设备访问起来和内存
2017-10-13 14:37:12 1439
转载 Linux的PCI驱动分析
Linux的PCI驱动分析 (2013-12-11 19:17:30)转载▼标签: linux it 1. 关键数据结构PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空
2017-05-26 21:08:44 306
转载 深入分析 Linux 内核链表
本文系转载https://www.ibm.com/developerworks/cn/linux/kernel/l-chain/本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组
2017-03-16 10:38:39 417
原创 单链表和双向循环链表的创建、初始化、以插入(二)
对于双向循环链表的创建可从下图理解:由上图可清晰的知道双向循环链表的结构,即对于一个newNode插入链表是首先应该将newNode的prev指向current,即newNode->prev=current;再将newNode的next指向current的next;即newNode->next=current->next;再将current的之前的下一个元素即15所指代的结构体指向newNod
2017-03-15 18:50:39 559
转载 单链表和双向循环链表的创建、初始化、以插入(一)
关于链表最近在学习linux 内核时发现关于链表的好多东西都已忘记了,重新又学习了下。关于单向循环链表涉及到链表的创建、初始化、插入、以及删除。#include "stdafx.h"#include "stdio.h"#include #include "string.h"typedef int elemType;typedef struct Node{
2017-03-15 18:09:22 808
原创 关于使用shell开辟几个并发线程同时执行互不相关的应用
在bash中,我们通过后台运行(&)实现多线程。#!/bin/bashtmpt="/tmp/$$.fifo"mkfifo $tmpt #新建一个fifo类型的文件exec 6rm $tmptt_sum=0;function fun3()#创建函数{ t_sum=$(($t_sum+1))}for ((i=0;iechodone >& 6
2016-11-23 15:24:31 612
原创 关于map,hash_map小数据量查询效率的问题
关于map>MultimapHash_map>Hash_multimap对于数据量不大情况下的测试情况:查询key值为4的情况下循环100万次得出的查询时间:Hash_map执行时间为868.575351秒Hash_multimap 执行时间892.441939秒Map_vector执行时间:717.130047秒Multimap执行时间为749.253617秒
2016-09-02 17:16:04 808
如何判断一段数据是否使用了加密?若加密使用了哪种加密方式?
2016-01-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人