- 博客(11)
- 资源 (14)
- 收藏
- 关注
原创 Lua 中栈操作的C API示例
这是《Lua程序设计》中的例子,做个简单记录。#include #include #include static void stackDump(lua_State *L){ int i; int top = lua_gettop(L); for(i = 1; i <= top; i++){ int t = lua_type(L, i);
2014-08-30 17:56:52 1403
原创 在C中调用Lua代码
这个程序从终端读入内容,而后按照lua块执行。#include #include #include "lua.h"#include "lauxlib.h"#include "lualib.h"int main(){ char buff[1024]; int error; memset(buff, 0, sizeof(buff)); lua_Stat
2014-08-29 16:47:53 1874
原创 skynet源码学习 - logger服务的工作原理
当skynet启动的时候,会根据配置文件制定的日志文件来创建一个logger context,具体过程就是找到logger.so动态链接文件,而后调用其logger_create函数(参数是配置的日志文件),而后构建这个服务对应的context(重要的是里面注册了该服务的回调函数_logger())和消息队列,最后执行logger_init函数,把logger的消息队列放入global que
2014-08-27 21:36:50 4092
原创 错误: 您选择的 CPU 不支持 x86-64 指令集
在运行Makefile的时候出现这个错误表示指定的类型无法满足当前的CPU,需要修改编译选项比如 gcc -g -Wall -march=x86-64 -o ......gcc编译器选项 -march表示为特定的cpu类型编译二进制代码(不能在更低级别的cpu上运行)
2014-08-27 19:54:52 9164
原创 skynet源码学习 - 读写锁实现
skynet 利用内置的原子操作来实现的一个读写锁,重点是理解 ”full memory barrier“ ,UNPv2 中利用互斥和条件变量实现的读写锁。前者是在硬件支持的情况下,显得简单明了,站的层次不一样。源码贴出来:struct rwlock { int write; int read;};static inline voidrwlock_in
2014-08-26 10:35:31 3087 1
原创 skynet源码学习 - 从全局队列中弹出/压入一个消息队列过程
学习云风的skynet源码,简单记录下。void skynet_globalmq_push(struct message_queue * queue) { struct global_queue *q= Q; uint32_t tail = GP(__sync_fetch_and_add(&q->tail,1)); // only one thread can set the sl
2014-08-25 20:55:05 1894
原创 为线程绑定CPU
// learn gcc atomic variable#define _GNU_SOURCE#include #include #include #include #include #include #include #include #define INC_TO 1000000 // every thread adds 1 million timesint glob
2014-08-24 12:13:02 1413
原创 OVS 发送OFPT_PORT_STATUS 过程
根据openflow协议,当一个物理端口从ovs datapath 增加,修改或者删除的时候,都会通过ofp_port_status异步消息告知Controller,比如当我们执行 ovs-vsctl add-port br0 eth0 之类的命令后,就会更新ovsdb数据库,而后全局变量 reconfiguring 变为true,从而会重新配置这个ovs。if (reconfig
2014-08-24 10:09:57 4622
原创 OVS中对于用户层和datapath层的多个通道利用epoll进行控制
这里先暂时记录下代码流程,有待完善。static intconstruct(struct ofproto *ofproto_){ struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_); const char *name = ofproto->up.name; int max_ports;
2014-08-18 20:56:39 1875
原创 对 dpif_class 结构体的一点认识
类 dpif_class 抽象的是OVS交换机用户空间和内核层datapath的通信接口(通过netlink),分层是出于性能和生产效率的考虑,通过接口dpif_class,用户层ovs-vswitchd会把发送各种端口,流表,查询等动作到内核层进行实际的执行,比如说我们增加一个端口到ovs中,那么就会从用户空间构造增加端口的 dpif_linux_vport 请求到datapath层。重点要
2014-08-18 20:44:26 3490
原创 "错误: void 值未如预期地被忽略"解决
在C陷阱与缺陷中,实现assert的时候,作者处理的很巧妙,利用逻辑或运算符的特性将这个过程转化为一个表达式,在当条件为假时就会调用_assert_error报错并终止程序。刚开始_assert_error 的返回值类型是 void 所以在((void)((e) || _assert_error(__FILE__, __LINE__))) 中出现了错误:void 值未如预期地被忽略,虽然e
2014-08-18 11:24:06 4149
Makecert.exe(证书创建工具)
2015-05-14
MySQL必知必会(高清)
2015-03-19
Java并发编程实践pdf及源码
2014-09-15
mentohust for linux
2014-06-17
Smart grid
2013-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人