- 博客(120)
- 资源 (5)
- 收藏
- 关注
原创 技术连接收藏
由于公司网络的原因,不能从外站博客转载原始图片内容,所以保留连接;离奇“undefined reference”错误分析与解决方案http://www.lingcc.com/2012/05/31/12093/#sec-1非常好的一个网站,安排活动,投票等很实用;http://www.doodle.com/android audio系统学习http://ww...
2014-01-10 14:11:30 1091 1
原创 dlopen 时序引起的crash问题
when use dlopen as below,dlhandler=dlopen(DLL_PATH,RTLD_LAZY);if dlopen was called in unsafe sequence, such as called after creating thead.it's possible to cause a race conditionbetween dlopen called by one thread and lazy symbol resolving ...
2021-01-25 16:50:54 1490 1
原创 Android Valgrind 使用
Valgrind是什么Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀Valgrind编译安装Android 7.0 上已经集成了Valgrind,只需进入external/valgrind目录下,mm -j16就可以编译va
2021-01-18 14:38:09 1897
原创 线程及进程同步方法分享(三): 进程同步(pthread_cond+互斥量)
线程及进程的同步 可以使用 信号量, 信号的方法。但实际使用过程中遇到一个难题,就是sem_timedwait 使用的是绝对时间, 如果timedwait过程中修改系统时间则会出现异常, timeout 提前退出或timeout 到期后还无法退出。原来的方法:线程同步使用pthread_cond+ mutex的方法可以参考如下文章。https://blog.csdn.net/w...
2019-07-16 09:57:44 402
原创 线程及进程同步方法分享(二): 进程同步(互斥量)
将 pthread_mutex_t 串接在 共享内存,同时 pthread_mutex_t 设置为进程共享属性,可以实现跨进程同步。 void * ShmCreate( int *iShmId, c8 *pc8Name, u32 u32Shmsize ) { u32 Key; Key = Crc32_ComputeBuf(0, 0, 0); Key = C...
2019-02-03 18:00:22 499
原创 线程及进程同步方法分享(一): 线程同步(互斥量)
互斥量的相关API://int pthread_mutex_init (pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);//int pthread_mutex_destroy (pthread_mutex_t *mutex);//int pthread_mutex_trylock (pthread_mutex_t *...
2019-02-02 15:59:42 368
转载 Linux 下进程互斥访问同一片共享内存的问题,
转自: https://www.cnblogs.com/my_life/articles/4538299.htmlhttp://segmentfault.com/a/1190000000630435http://blog.csdn.net/luansxx/article/details/7736618 这里的“不相干”,定义为:这几个进程没有父子关系,也没有 Server/Cl...
2019-01-31 11:01:10 1132
转载 内存都去哪了
http://ju.outofmemory.cn/entry/110234 转自: 前两天一台128G内存的oracle主机发生故障触发kdump,最终由于var目录空间不足,导致kdump生成不完全。结合之前redhat给出的建议,crash设置的空间最好大于memory 空间。对此我们做了一个简单的计算,认为kdump主机生成的是运行在内存里的信息 ,虽然主机有128G的内存,不过通过...
2018-12-04 15:55:01 2465
原创 call timerfd_create,return errno=38 function not implemented
timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC);返回errno=38 function not implemented的错误 解决方法:需要在kernel中配置CONFIG_TIMERFD=y 的选项。
2017-12-30 16:02:31 2595
原创 查看当前进程打开fd的数量及上限
ulimit -Hn4096cat /proc/sys/fs/file-nr 2048 0 50438cat /proc/sys/fs/file-max50438cat /proc/sys/fs/nr_open 1048576sprintf snprintf vsprintf vsnprintf strcpy strncpy st
2017-12-30 15:57:16 11604
原创 测试USB 读写速度
dd if=/dev/sda of=/dev/null bs=1M count=1000每次测完 清一下 memory cacheecho 3 > /proc/sys/vm/drop_caches不然会继续从cache 读数据/ # dd if=/dev/sda of=/dev/null bs=1M count=10001000+0 records in1000+0
2017-12-05 10:57:05 7509
原创 2016_随记备忘录
打印进程运行时open的fd数量:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more从一个server往另外一个server copy文档:scp –r xxxx/*USERNAME@xxx.xx.xxx.xxx:/home/xxxxx/< >&"&a...
2016-08-01 16:20:08 475
原创 android studio的配置问题
下载安装了个android studio , 碰到各种问题。http://tieba.baidu.com/p/2970979131failed to find Build Tools revision 19.0.0解决办法参考: my.oschina.net/wffger/blog/279840 下载sdk的路径:http://www.androiddevtools.cn/
2016-07-04 18:28:52 343
原创 同一个进程内open两次同一文件并读写
今天和同事讨论一个文件是调用两次open是否会成功, 以及交叉读写会有什么结果? FILE* fd1 = NULL; FILE* fd2 = NULL; char buffer1[40]; char *buffer2 = "gggggggggg"; int ret = 0, ret1; fd1 = fopen("./text", "rb+"
2016-06-24 14:08:07 8489 1
原创 logcat后ctrl+Z 退出,压测导致OOM
在console端输入logcat, 然后ctrl+z 将logcat进程切到background, 压测一段时间后/system/bin/logd会消耗大量内存,从而导致OOM并Killing 'd.process.xxx'导致系统各种异常。/system/bin/logd 是android log系统的守护进程, 如果将logcat切到后台,应该是会把log信息保存到内存。log如
2016-05-31 15:08:52 859
原创 如何下载android-cts-5.0_r5源码
参考文档:http://yinger-fei.iteye.com/blog/1300144http://blog.csdn.net/ruanjianxiong/article/details/7610299$ mkdir ~/bin$ PATH=~/bin:$PATH$ curl https://storage.googleapis.com/git-re
2016-04-14 19:23:57 2199 1
原创 谨慎使用BN_bin2bn和BN_bn2bin
BIGNUM *a = NULL; BIGNUM *b = NULL; BIGNUM *c = NULL; unsigned char *xychar= NULL; int i; unsigned char data[20]; const unsigned char testk[20] = { 0x00, 0x01, 0x43, 0xbd, 0x74,
2016-03-15 16:49:14 15571 8
原创 linux PATH环境变量设置与读取
在项目开发过程中, 需要根据路径来运行一些脚本或者程序, 开发中不适宜写死为固定的path. 这样移植code或维护都会不太便利, 比较好的做法是配置环境变量并且在code中从环境变量来读取, 这样不同的project还可以配置不同的环境变量但使用同一套code.以下是一些例子:1. 在启动启动运行的脚本中设置如下环境变量: export WIFI_MODULES_PATH=$P
2016-01-29 17:17:39 990
原创 cmake学习实例
下面是自己写的一个cmake的例子, 编译的过程中碰到了很多麻烦问题, 贴出来分享下。###################################################### minidlna: dms##################################################MACRO( MA_IMPORT_LIB name type lib
2016-01-29 17:01:31 3557
原创 多进程学习3
本文主要描述如何启动一个独立的program并实现进程间的通信。 主进程main1:void main( void ) { const char cmd_start[] = "start"; const char cmd_stop[] = "stop"; char str_read_fd[10]; char str_write_fd[10]; int file_pipes
2016-01-12 16:23:28 691
原创 多进程学习2
多进程学习1讲了fork和execl的用法, 那么system和execl有啥区别呢? 下面是system的例子, code和 上一篇文章一致。 main1:void main( void ) { pid_t child = fork(); if ( child == -1 ) // this is the child process { p
2016-01-08 18:55:08 329
原创 多进程学习1
下面是一个使用fork 并运行另外一个程序的例子: main1 程序如下:void main( void ) { pid_t child = fork(); if ( child == -1 ) // this is the child process { printf( "fork err.\n" ); exit(EXIT_FAILURE
2016-01-08 17:13:40 408
原创 死机案例分析1
問題描述:XXXX 海外项目待机开机压测时出现死机,遥控器无响应。问题分析:出现问题时有产生如下backtrace:F/libc ( 523):@@@ ABORTING: LIBC: ARGUMENT IS INVALID HEAP ADDRESS IN dlfree addr=0x70ef03a8 #00 pc 0000f13c /system/lib
2015-12-23 20:11:57 767
转载 SQLite3 C语言API入门
SQLite3 C语言API入门下载SQLite3我们下载sqlite源码包,只需要其中的sqlite3.c、sqlite.h即可。最简单的一个创建表操作
2015-09-29 15:14:51 430
转载 linux学习-pipe
转自: http://www.cnblogs.com/biyeymyhjob/archive/2012/11/03/2751593.html 下面管道的例子是多进程之间的用法, 如果在多线程中使用pipe, 在任何一个线程中关闭pipe[0] 或者 pipe[1] 都会导致另外一个线程无法正常使用pipe, 不像多进程中进程1中关闭pipe[0] , 进程2中还可以用pipe[0] 。
2015-09-08 16:33:30 626
原创 linux学习---select的用法
select 不仅会改变timeout的值,而且会改变fd_set集合的值。所以调用完一次select后,fd_set和timeout都必须重置.struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseco
2015-09-08 16:16:16 580
原创 常见编译错误解决
编译错误1: goto 语句错误dtcp_ake_state_machine.c:742:1: error: jump to label ‘error_exit’ [-fpermissive] error_exit: ^dtcp_ake_state_machine.c:706:14: error: from here [-fpermissive] goto
2015-08-21 10:48:48 1084
转载 crosses initialization of “XXX”
http://blog.sina.com.cn/s/blog_4b9eab320100s8s1.htmlcrosses initialization of “XXX” 这个问题是由于goto引起的;goto是已经名为不提倡的语句,但是有时它还是很有用的。代码:11 void func()12 {13 A a1;14 cout
2015-07-28 17:58:25 584
原创 命令行svn commit分享
有时候命令行提交某个文件夹下的code时不知道会提交哪些文件,直接svn commit可能会出现多提交你未预料到的其他文件,咋办? 先svn status, 再svn commit. Example : @xalnx6:~/CTV_2K15/CTV_P2K15/TV/install$svn status ./include/dtcp_ip ./lib/dtcp_
2015-07-13 11:12:20 3834
原创 mutex和condition的用法
分享一下用到的mutex和condition用法。Mutex一般有两种使用情况,一种是单独使用,保护临界区。一种是和condition配合使用,可以等待某condition拿到之后再向下走。Condition 有两种signal形式, single和 broadcast,下面例子是signal的,做个参考。 pthread_cond_t ake_cond = PTHRE...
2015-07-13 11:08:49 4009
原创 如何将wpa_supplicant ssid字串转换为utf8
在PC平台 char *buf3 = "\xe8\xbf\x9e\xe7\x94\xa8\xe7\x94\xb5\xe5\xbd\xb1\xe5\x90\x8e\xe6\x82\x94\xe4\xba\x86\xe4\xba\x86\xe4\xbb\x96\xe5\x92\xaf";Strlen(buf3)=30, 而不是120. 导致验证的过程中费了写周折。snprintf(buf1, 120,
2015-06-27 20:57:37 4320
转载 windows下copy批处理命令
收藏备用 //将D:\source 下的所有文件 copy到D:\dest\ @echo offfor /r D:\source %%i in (*.*) do if exist %%i copy "%%i" D:\dest\ /ypause
2015-06-27 13:49:14 2199
转载 PRID64干啥的
http://blog.163.com/guixl_001/blog/static/4176410420121021111117987/nt64_t用来表示64位整数,在32位系统中是long long int,在64位系统中是long int,所以打印int64_t的格式化方法是:[cpp] view plaincopyprintf("%l
2015-05-13 14:03:37 4709
原创 不同等级的debug信息打印
借鉴android 中logcat的不同等级debug信息, 在c语言层打印debug信息时也可以采用如下的定义来控制debug信息的打印。#define DEBUGLEVEL 4#if (DEBUGLEVEL > 0)#define DTCPLOGE(TAG,args...) printf("[DTCP] E/"); printf(TAG); printf(": "); printf
2015-04-13 10:13:29 954
转载 makefile学习3-wildcard和patsubst
notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~1、makefile里的函数makefile里的函数使用,和取变量的值类似,是以一个‘$’开始,然后是一个括号里面是函数名和需要的参数列表,多个变量用逗号隔开,像这样 return = $(functionname arg1,arg2,arg
2015-04-10 10:40:01 679
原创 makefile 学习例子2
TARGET_SINK = sinkTARGET_SERVER = serverSINK_SRC = sink.cSERVER_SRC = server.cSINK_OBJ = sink.oSERVER_OBJ = server.oCXX = arm-linux-gnueabihf-g++INCLUDES = -I/opt/arm/gcc-linaro-arm-linu
2015-04-10 10:22:57 458
原创 makefile 学习例子1
TARGET = unit_testC_SRCS = main.cC_OBJS = $(patsubst %.c, %.o, $(C_SRCS))CXX = arm-linux-gnueabihf-g++INCLUDES = -I/opt/arm/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/arm-linux-
2015-04-10 10:22:09 533
原创 shell脚本的学习例子2
主要功能就是打开logcat并保存到指定路径的文件中,当文件达到一定大小时,新建一个文件。 #[Working flow]#Check nvtlog is existed in emmc or sd card#If nvtlog is existed in USB diskif [ -f /storage/usbdisk/nvtlogc ]; then #dump t
2015-03-18 10:36:54 677
原创 shell 脚本的学习例子1
打包文件系统img的脚本如下:#!/bin/shif [ $# != 2 ]; then echo "Usage:$0 size_in_MB fs_floder_name"else rm -fr mnt mkdir mnt dd if=/dev/zero of=./$2.img bs=1M count=$1 echo "y" | mkfs.ext4 -b 4096
2015-03-18 10:20:56 427
原创 crash引起播放列表退出的问题分析过程分享
定位到crash问题, 见2015-01-05-18-19-49.log 236629-238000行, 错误如下:signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 40b6ca9aFFMpegPacketRea (2443): undefined instruction: pc=40b6ca9a[01:05:19:06:22]I/D
2015-03-18 10:05:48 1260
android binder ipc示例
2016-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人