libubox-ustream】的更多相关文章

lbubox是openwrt的一个核心库,封装了一系列基础实用功能,主要提供事件循环,二进制格式处理,linux链表实现和一些JSON辅助处理. 它的目的是以动态链接库方式来提供可重用的通用功能,给其他模块提供便利和避免再造轮子. libubox主要提供三部分功能: 1)提供多种基础通用功能接口,包含链表,平衡二叉树,二进制处理,key-value链表,MD5等. 2)socket通信. 3)一套基于事件驱动的机制及任务队列管理功能. 编译安装到PC 1. 修改目录下CMakelists.txt…
openwrt提供了一个系统总线ubus,类似linux桌面操作系统的d-bus,目标是提供系统级的进程间通信(IPC)功能. 为了提供各种后台进程和应用程序之间的通信机制,ubus被开发出来,由3部分组成:精灵进程,接口库和实用工具. 工程的核心是ubusd精灵进程,它提供了一个总线层,在系统启动时运行,负责进程间的消息路由和传递.其他进程注册到ubusd进程进行消息的发送和接收.这个接口是用linux文件socket和TLV手法消息实现的.每一个进程在指定命名空间下注册自己的路径.每一个路径…
1.    libubox概述 libubox是openwrt新版本中的一个基础库,有很多应用是基于libubox开发的,如uhttpd,netifd,ubusd等. libubox主要提供以下两种功能: 提供一套基于事件驱动的机制: 提供多种开发支持接口,如链表.kv链表.平衡查找二叉树.md5.json等. 使用libubox开发的好处有如下几点: 可以使程序基于事件驱动,从而可实现在单线程中处理多个任务: 基于libubox提供的API可以加快开发进度,提高程序的稳定性: 能更好的将程序融…
一:uloop概述 uloop有三个功能: 文件描述符触发事件的监控,  timeout定时器处理, 当前进程的子进程的维护 二: uloop的整体框架 1: /** 2: * 初始化事件循环 3: *主要工作是poll_fd = epoll_create(32);/* 创建一个epoll的文件描述符监控句柄.最多监控32个文件描述符 4: **/ 5: int uloop_init(void) 6: { 7: if (poll_fd >= 0) 8: return 0; 9:   10: po…
一:相关API介绍 1.相关源码文件:usocket.h usocket.c 2.类型标志 1: #define USOCK_TCP 0 2: #define USOCK_UDP 1 3: #define USOCK_SERVER 0x0100 4: #define USOCK_NOCLOEXEC 0x0200 5: #define USOCK_NONBLOCK 0x0400 6: #define USOCK_NUMERIC 0x0800 7: #define USOCK_IPV6ONLY 0x…
一:blob相关接口 1.数据结构 1: struct blob_attr { 2: uint32_t id_len; /** 高1位为extend标志,高7位存储id, 3: * 低24位存储data的内存大小+结构大小(blob_attr) */ 4: char data[]; 5: } __packed; 6: 实际使用中每个blob_attr的长度包含:结构长度(4)+数据长度+对齐特性= id_len+pad_len 7: struct blob_attr_info { 8: unsi…
1.平台MT7628 2.交叉编译器及版本信息mipsel-linux + buildroot-gcc463_32bits.tar.bz2 3.创建工作目录lancer@ubuntu:~$ mkdir -p tr069/usr lancer@ubuntu:~/tr069/usr$ pwd/home/lancer/tr069/usr 4.移植json-c ------------------------------------------------------------------------…
参考:libubox [4] - uloop runqueue ustream 任务队列是通过uloop定时器实现,把定时器超时时间设置为1,通过uloop事件循环来处理定时器就会处理任务队列中的task.进程任务在任务队列基本上实现,加入子进程退出监控. procd采用此机制. 1. 数据结构 struct runqueue { struct safe_list tasks_active; /** 活动任务队列 */ struct safe_list tasks_inactive; /** 不…
参考:libubox [4] - uloop runqueue ustream libubox提供了流缓冲管理,定义在文件ustream.h,ustream.c和ustream-fd.c. 1. 数据结构 struct ustream_buf { struct ustream_buf *next; char *data; /** 指向上次操作buff开始地址 */ char *tail; /** 指向未使用buff开始地址 */ char *end; /** 指向buf结束地址 */ char…
声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.net/detail/eryunyong/9590036 一. linux上安装 为了更好理解easycwmp运行机制和以及部署在各类linux内核的操作系统环境,我们选择官网的第二种安装方法. (1)       linux系统:Ubuntu 12.04 (2)       安装EasyCwmp所需…
原创作品,转载请注明出处 copyright:weishusheng   2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.el6.x86_64 交叉编译器路径:/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux- 开发板:FL2440 开发板运行内核:linux3.0 开发板文件系统:initramfs easycwmp依赖的许多软件的Makefile都是用cmake语法生成…
离成功实现路由器刷OpenWrt.接入校园网差不多一年了.路由工作比较稳定,还是很满意的. 这次回来有个新发现:学校有原生ipv6支持,在win7和ubuntu下什么都不用设置,自动获取global unicast的ipv6地址.但是路由器内部局域网的客户机则没法享受这个待遇.趁春节放假,好好研究了一下怎样让客户机也拿到ipv6地址. 大概折腾了3天,前两天走了弯路.岔路. 网上的教程已经很多了,一搜一大把,比如这个.和这个,但是做起来比较复杂,静态ip可能好点,动态分配就有很多麻烦事. 而且要…
最近想研究一下Openwrt,于是开始搭建openwrt环境,虽然现在没有现成的板子,但是 可以先编译起来. openwrt的特点是基于下载 -> patch -> 编译 的一个工作模式,openwrt整个包一开始下载下来也不是很大,因为里面 基本上没有源码,要在编译的时候下载. 看了别人的帖子,都推荐使用svn从官网下载源码, svn co svn://svn.openwrt.org/openwrt/trunk/ 但是实际测试发现它的速度太慢了,为了得到官方的源码,从github上找到了它:…
先来看内存池的实现,nginx的内存池实现的非常简单. 这里内存池的一些图表可以看老朱同学的slides : http://blog.zhuzhaoyuan.com/2009/09/nginx-internals-slides-video/ 当内存池初始化的时候(下面会分析到)ngx_poll_s只相当于内存池的一个头,保存了当前内存池的一些必要信息而已. 当从内存池存取数据的时候,nginx是分为两种类型来处理得,一种是小块数据,它是直接从内存池中取得数据,另一方面,当为大块数据时,它是直接m…
A beginner’s introduction to Deep Learning I am Samvita from the Business Team of HyperVerge. I joined the team a few months back to help out on User Growth, PR and Marketing. From when I first heard about HyperVerge, I had one question – What is thi…
10款无需编程的App DIY开发工具 你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App  DIY开发工具.DIY开发工具不仅节省了开发时间和资金更为那些创意无限热爱应用的人提供了便捷的开发方式无需编程即可让创意落地成形. 此外DIY开发工具也满足了细化的应用市场的需要这些市场用户规模较小可能仅仅是为了满足工作中的沟通和管理需要可能仅仅是为了与粉丝互动也可能仅仅是为了给某个活动做宣传等等. 这些DIY开发工具无需编程经验绕开了技术的壁…
标题:使用 OpenWrt Image Generator 为 WR703N 路由器定制固件 之前试着自己编译固件,编译是成功了,但是在后期安装官方仓库的ipk时出现问题,因为自己编译的固件和官方固件的内核版本号不一样,导致官方仓库的ipk不能安装,即使使用--force-depends参数强制安装也不能成功. openwrt的内核版本号后边带的一串checksum是根据配置计算出来的,即使使用同官方固件相同版本的源代码编译,只要配置不一样,编译出来的内核版本也是不一样的. 后来发现了 Imag…
http://www.ahinc.com/aix/general.htm http://web.mit.edu/javadev/packages/Acme/ http://jparsec.codehaus.org/jparsec+Overview http://jcommander.org/ https://github.com/ustream/yolo pig http://www.devx.com/Java/Article/48100 http://www.devx.com/Java/Art…
openwrt 添加应用的几个步骤如下: (1)在目录 ./feeds/luci/applications 下添加要增加的应用,譬如 "luci-test" (2)里面应该包含以下几个目录 hbg@root:~/trunk/feeds/luci/applications/luci-test$ tree.├── ipkg                      //  1.包相关│   ├── conffiles│   ├── postinst│   └── postrm├── lua…
2017-1-15-libubox analysis libubox utils.h utils.h 提供了一些简单的实用工具函数.比如大小端转换,位图操作,编译器属性的封装,连续内存申请函数calloc_a,静态计算数组大小的宏,断言/调试的实用工具,苹果兼容的时钟获取时间的封装,base64编解码. /*  *   * calloc_a(size_t len, [void **addr, size_t len,...], NULL)  * 申请一个足够大内存块来保存多个对齐的对象.  * 返…
这几天一直在研究对webapi的限流和名单的问题,于是看了开涛博客的方案,于是就用到了openresty,一个把Nginx和lua集成的东西. 下面就是整理的安装方案(简单使用基本可以这么安装) 下载openresty(centos上下载也可以) 安装依赖环境 yum install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl tar -xzvf ngx_openresty-版本.tar.gz 安装LuaJIT cd …
When we try to transplant ubus to uclinux, ubusd can't run but "ubus list" will hang up. 1. netstat -anp unix  2      [ ]         STREAM     CONNECTING         0 -                   /var/run/ubus.sock 2. client is blocked at read() system call 3…
Linux系统实现youtube推流直播 系统:centos-7 软件:FFMPEG, youtube-dl 1. 安装FFMPEG 创建并cd到一个目录,下载最新的FFMPEG(下面是64位,32位需分别下载 https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-i686-static.tar.xz https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-i686-static.tar.xz.md5)…
OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 Web 应用.Web 服务和动态网关(摘自官网).本文将会介绍如何在Centos7上,安装Nginx+Lua的开发环境,并运行一个“Hello World”示例. 一.环境安装 1.1 创建工作路径 我计划将Openresty安装到/usr/servers下,首先创建这个文件夹. [root@localh…
这篇文章是一个多月前写的,当时之所以搭建这个是为了最大程度上发挥Nginx的高并发效率(主要是结合lua脚本),参考的话,主要参考张开涛先生写的跟开涛学Nginx+lua系列文章,地址为:https://jinnianshilongnian.iteye.com/blog/2190344 当时本人按照张开涛写的一步一步搭建,当然了也发现一些小问题,所以在此将其发表出去,另外强调一点,开发人员无论是平时编写代码或者是调研新技术或者实践,最好也写写文档总结一下. 我写文档的主要目的,一来让自己思路更加…
一.前言 我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者对其望而生畏.为了开发人员方便,所以接下来我们要介绍一种整合了Nginx和lua的框架,那就是OpenResty,它帮我们实现了可以用lua的规范开发,实现各种业务,并且帮我们弄清楚各个模块的编译顺序.关于OpenResty,我想大家应该不再陌生,随着系统架构的不断升级.优化,OpenResty…
Compiling UCI as stand alone cd ~ git clone git://nbd.name/uci.git ~/uci cd ~/uci cmake -DBUILD_LUA=off sudo make install 或make install DESTDIR=$HOME(为了能够安装到标准路径下,方便其他程序也可以调用uci库,此处选择sudo mak install安装到根目录下) 此时会提示出错, 进入 http://nbd.name/gitweb.cgi?p=l…
安装Nginx+Lua+OpenResty开发环境配置全过程实例 OpenResty由Nginx核心加很多第三方模块组成,默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用. 借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序. 而且OpenResty提供了大量组件如Mysql.Redis.Memcached等等,使在Nginx上开发Web应用更方便更简单. 目前在京东如实时价格.秒杀.动态服务.单品页.列表页等都在使用Nginx+Lua架构,其…
前言 openwrt 是一个用于的 路由器 的开源系统. 其他类似的路由器系统相比它的更新速度非常的快,可以看看 github 的更新速度 https://github.com/openwrt/openwrt 感觉以后用到 openwrt 的路由器会越来越多,而且 openwrt 可以直接用 vmware 来运行,也减少了学习的成本. 本文介绍一下 openwrt 的 ubus 机制 以及怎么利用 rpcd 通过 http 来访问 openwrt 里面的 ubus. 最后以一个 cve 为例介绍…
openwrt中用到双向无头链表,实际应用时应在外部定义实体链表头,后续可直接应用链表函数(宏定义已将链表头排除在外): static struct list_head timeouts = LIST_HEAD_INIT(timeouts);static struct list_head processes = LIST_HEAD_INIT(processes); 与linux相同,定义如下: #ifndef _LINUX_LIST_H_ #define _LINUX_LIST_H_ #incl…