C
路人戊戌乙亥
这个作者很懒,什么都没留下…
展开
-
ELF映像的装入(二)
http://www.longene.org/techdoc/0750005001224576724.html漫谈兼容内核之九:ELF映像的装入(二)毛德操 上一篇漫谈介绍了在通过execve()系统调用启动一个ELF格式的目标映像时发生于Linux内核中的活动。简而言之,内核根据映像头部所提供的信息把目标映像映射到(装入)当前进程用户空间的某个位置上;并且,转载 2017-11-13 23:58:18 · 560 阅读 · 0 评论 -
ELF映象的装入(一)
漫谈兼容内核之八:ELF映像的装入(一)毛德操 上一篇漫谈中介绍了Wine的二进制映像装入和启动,现在我们来看看ELF映像的装入和启动。一般而言,应用软件的编程不可能是“一竿子到底”、所有的代码都自己写的,程序员不可避免地、也许是不自觉地、都会使用一些现成的程序库。对于C语言的编程,至少C程序库是一定会用到的。从编译/连接和运行的角度看,应用程序和库程序的连接有两种方法。一种是转载 2017-11-13 23:57:28 · 592 阅读 · 0 评论 -
socket关闭: close()和shutdown()的差异
转:http://drmingdrmer.github.io/tech/programming/network/2015/07/28/close-shutdown.html对于一个tcp连接,在c语言里一般有2种方法可以将其关闭:close(sock_fd);或者shutdown(sock_fd, ...);多数情况下这2个方法的效果没有区别,可以互换使用。除了:c转载 2016-05-26 10:13:02 · 7625 阅读 · 0 评论 -
android su源码
android su 通过源码编译出来的;文件位置: $android/system/extras/su/Android.mk: LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= su.cLOCAL_MODULE:= suLOCAL_FORCE_STATIC_EXECUTABL原创 2015-06-26 17:10:13 · 6065 阅读 · 0 评论 -
变态的libDispatch源码分析-全局队列异步延时任务处理过程-原理与创建ds
延时任务的处理通常包括如下几个要素:a). 任务;b). 延时任务队列;c). 计时器,循环检测延时任务队列,若有任务到时则取出,然后执行;下面分析下GCD中关于libdispatch的延时任务处理方式。下面这部分代码是根据自身需求,封装的一个接口,基本能满足异步延时任务的处理:void _dispatch_delayed(dispatch_time_t when,原创 2014-01-20 20:49:31 · 4583 阅读 · 0 评论 -
bionic semaphore学习
文件位置:bionic/libc/bionic/semaphore.c头文件位于Linux kernel中下面是头文件定义的接口:/* Initialize semaphore object SEM to VALUE. If PSHARED then share it with other processes. */extern int sem_init (sem_t原创 2014-01-16 17:06:21 · 1328 阅读 · 0 评论 -
变态的libDispatch结构分析-全局队列同步任务处理过程
GCD的处理过程,从全局队列的同步处理任务开始。先说明一下两个宏定义#if __GNUC__#define fastpath(x) ((typeof(x))__builtin_expect((long)(x), ~0l))#define slowpath(x) ((typeof(x))__builtin_expect((long)(x), 0l))# define __bu原创 2014-01-17 16:52:07 · 2032 阅读 · 0 评论 -
变态的libDispatch源码分析-全局队列异步延时任务处理过程-设置计时器与插入ds
1. 为ds设置计时器,并将其加入到计时任务队列中(1) .入口dispatch_source_set_timer(ds, when, 0, 0);when参数由用户提供,有下面几种情况:#define DISPATCH_TIME_NOW 0#define DISPATCH_TIME_FOREVER (~0ull)0: 表示立即执行;-1: 永久等待原创 2014-01-22 11:28:50 · 2939 阅读 · 0 评论