Linux
路人戊戌乙亥
这个作者很懒,什么都没留下…
展开
-
Tips for debugging on Linux
This page is for Chromium-specific debugging tips; learning how to run gdb is out of scope.ContentsSymbolized stack traceGDBBasic browser process debuggingAllowing attaching to foreign p翻译 2016-10-13 11:12:46 · 933 阅读 · 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 · 7647 阅读 · 0 评论 -
同步linphone
linphone, 牛逼的VOIP开源项目。不做过多说明。参看http://www.linphone.org/代码同步参看下表:Projectgitlinphone, including:oRTPmediastreamer2liblinphonelinphoneclinphone (gtk)git原创 2016-03-17 14:26:19 · 1747 阅读 · 0 评论 -
SPDY介绍
SPDY(读作“SPeeDY”)是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。功能定位将页面加载时间减原创 2016-02-15 16:08:10 · 964 阅读 · 0 评论 -
sudo fastboot not found and no permissions
fastboot flash boot out/target/product/generic/boot.img不管用,提示原因查找:用fastboot命令查看设备提示无权限,如下:$ fastboot -l devicesno permissions fastboot usb:2-1.3于是知道是因为权限问题,是fastboot没有权限, 解转载 2016-11-01 19:53:12 · 2076 阅读 · 0 评论 -
使用ubuntu16.0416.04
16.04 无法上网1. VMware 设置: Edit -> Virtual Network Editor-> Vmnet0 : Bridged, Auto-bridging.2. 在关闭虚拟机的情况下设置。 Virtual Machine Settings -> Network Adapter -> Custom(VMnet0)3. 启动Ubuntu原创 2017-01-08 11:48:34 · 604 阅读 · 0 评论 -
ELF映象的装入(一)
漫谈兼容内核之八:ELF映像的装入(一)毛德操 上一篇漫谈中介绍了Wine的二进制映像装入和启动,现在我们来看看ELF映像的装入和启动。一般而言,应用软件的编程不可能是“一竿子到底”、所有的代码都自己写的,程序员不可避免地、也许是不自觉地、都会使用一些现成的程序库。对于C语言的编程,至少C程序库是一定会用到的。从编译/连接和运行的角度看,应用程序和库程序的连接有两种方法。一种是转载 2017-11-13 23:57:28 · 600 阅读 · 0 评论 -
ELF映像的装入(二)
http://www.longene.org/techdoc/0750005001224576724.html漫谈兼容内核之九:ELF映像的装入(二)毛德操 上一篇漫谈介绍了在通过execve()系统调用启动一个ELF格式的目标映像时发生于Linux内核中的活动。简而言之,内核根据映像头部所提供的信息把目标映像映射到(装入)当前进程用户空间的某个位置上;并且,转载 2017-11-13 23:58:18 · 577 阅读 · 0 评论 -
Android ART 分析
对Android ART的分析,主要包括ART Runtime启动过程以及dex2oat的分析。由于代码量较多,忽略了很多细节,所以分析过程会存在错误;ART Runtime采用单例模式,启动过程中参数解析实例化会对后续dex2oat的分析有所影响,但是我在分析过程中没有去特别关注每个参数,有兴趣的可以自行分析!另外ART Runtime还可以继续深入分析!BTW,附件中是分析中使用的转载 2017-12-31 00:01:31 · 2450 阅读 · 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 · 6090 阅读 · 0 评论 -
bionic Condition
然后我们进入源码分析。bionic将条件变量封装成了一个类,也就成为了Condition这也是Bionic的设计理念之一,就是让事情变得真正简单化。 * Condition variables are paired up with mutexes. Lock the mutex, * call wait(), then either re-wait() if things a原创 2013-12-30 19:43:57 · 1162 阅读 · 0 评论 -
epoll_create, epoll_ctl和epoll_wait 讲解
NAME epoll - I/O event notification facilitySYNOPSIS #include DEscrīptION epoll is a variant of poll(2) that can be used either as Edge or Level Triggered interface an转载 2014-01-06 17:17:12 · 2873 阅读 · 0 评论 -
ThreadLocal
1. 定义ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会原创 2014-01-07 19:34:22 · 700 阅读 · 0 评论 -
Android 线程4件套 MessageQueue Message Looper Handler之Looper
Android驱动线程消息公四件套:消息载体:Message消息队列:MessageQueue消息循环:Looper消息处理:Handler所以核心都是以Looper为基础的,形象的表示为一个无限循环的环;在它运行期间会一直从MessageQueue中取出Message,然后通过Handler处理掉。在COS中存在多个Looper:第一个Looper:文原创 2014-01-07 17:49:36 · 2175 阅读 · 1 评论 -
变态的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 · 2952 阅读 · 0 评论 -
变态的libDispatch源码分析-全局队列异步延时任务处理过程-计时轮询
前文讲到了进入计时队列轮询,通过_dispatch_mgr_invoke进入到了下面这段代码:static dispatch_queue_t_dispatch_mgr_invoke(dispatch_queue_t dq){ static const struct timespec timeout_immediately = { 0, 0 }; struct timespec time原创 2014-01-22 10:40:32 · 5892 阅读 · 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 · 2048 阅读 · 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 · 1356 阅读 · 0 评论 -
UNIX/Linux程序设计教程之错误处理
UNIX的系统调用和大部分库函数在失败时会返回一特殊值报告出错,这个特殊值通常是–1。这种返回值仅告诉调用遇到了错误而已,为了让应用知道究竟发生了什么错误,系统调用和库函数同时还会在系统定义的变量errno中给出指明错误原因的错误码。变量errno是系统调用和库函数用来报告错误的一种标准方法。早期的UNIX和C将它实现为外部整型变量,其说明为:extern int errno;转载 2014-01-16 16:35:32 · 1276 阅读 · 0 评论 -
关于一些线程锁相关的心能对比
1. 旋锁spinlock剖析与改进2. Pthreads mutex vs Pthreads spinlock原创 2014-01-16 14:53:00 · 797 阅读 · 0 评论 -
变态的libDispatch源码分析-全局队列异步延时任务处理过程-原理与创建ds
延时任务的处理通常包括如下几个要素:a). 任务;b). 延时任务队列;c). 计时器,循环检测延时任务队列,若有任务到时则取出,然后执行;下面分析下GCD中关于libdispatch的延时任务处理方式。下面这部分代码是根据自身需求,封装的一个接口,基本能满足异步延时任务的处理:void _dispatch_delayed(dispatch_time_t when,原创 2014-01-20 20:49:31 · 4609 阅读 · 0 评论 -
变态的libDispatch结构分析-semaphore
文件位置:libdispatch/dispatch/semaphore.hlibdispatch/src/semaphore.c针对Dispatch的semaphore定义了三个方法:/*! * @function dispatch_semaphore_create * * @abstract * Creates new counting semaphore w原创 2014-01-16 18:32:33 · 2712 阅读 · 0 评论 -
dlopen 与dlsym
共享对象通过dlopen动态打开动态库的加载完成后,返回一个句柄,通过dlsym定位到你需要执行的函数指针然后可以在程序中使用dlopen -- open a dynamically linked librarydlsym -- get the address of a symbol in a dynamically linked library例子void*handle;转载 2014-03-14 16:45:05 · 791 阅读 · 0 评论 -
linux映射磁盘或者文件夹到windows
方法有两种:笔者用的是Ubuntu13.10.1. 像windows一样共享 a. 点击要共享的文件夹或者磁盘,右键属性,会弹出一个框,点击share,然后根据选项,修改权限,over; b. 进入到window, cmd->\\*.*.*.* 如果网络正常,自然会 显示你刚才共享的文件夹, 然后右键,点击映射网络驱动器2. smba 老一点的原创 2015-04-21 15:30:29 · 16473 阅读 · 0 评论 -
android bionic mutex分析
1. 先从mutex的构造开始/* * Simple mutex class. The implementation is system-dependent. * * The mutex must be unlocked by the thread that locked it. They are not * recursive, i.e. the same thread can原创 2013-12-27 18:07:40 · 2770 阅读 · 0 评论