- 博客(46)
- 收藏
- 关注
原创 转载:冷钦街老师倾力打造的OpenHarmony南向设备开发平台试运行啦
本平台集成了 OpenHarmony 代码获取、代码修改、代码提交、代码编译、编译镜像下载几大功能。用户只需要准备开发板以及烧录镜像的工具就可以进行 OpenHarmony 南向设备开发工作。特别适合学生使用,也方便对 OpenHarmony 感兴趣的研究人员使用。
2023-11-29 21:35:41
154
原创 【详细深入分析OpenHarmony编译流程】
OpenHarmony做为复杂的操作系统软件,其编译构建也比较复杂。本文主要记录作者自己在阅读编译脚本代码后对其的认识,不代表官方观点,不足之处还请批评指正。本文顺着编译流程阅读和解释编译脚本代码,即执行时间靠前的代码先解释,执行时间靠后的代码后解释。本文参考代码为2024年7月8日master分支代码。为了方便查看OpenHarmony代码,作者搭建了一个服务器,欢迎使用https://lengqinjie.xyz。
2023-03-31 13:03:20
8812
5
原创 鸿蒙APP框架分析
本文主要描述鸿蒙系统的APP框架的代码组成,APP的一些概念。APP的启动,APP的生命周期,APP之间的交互情况。主要关注进程级别。而进程内的线程级别在其它文章描述。通过本文的学习,可以对APP的运行机制有一个大致的把握和理解。
2020-12-17 10:12:51
2190
1
原创 VPP-BIHASH实现分析
/vppinfa/bihash_template.h本文件为本数据结构的核心头文件概念一key-value-pair 键-值-对。 组成HASH表的各元素,在C语言中,一般定义成一个struct,其中一部分是key, 另一部分是value。每1个key在hash表中只能出现1次通过key用来计算hash值。不同的key可能计算出相同的hash值,如果表中存在2个这样的表...
2018-12-06 15:04:00
2494
原创 C++11标准解读--内存模型部分
1.7 The C++ memory model C++内存是按字节寻址的,每个字节有唯一的内存地址,每个字节有低位和高位(权重大的位)不同的内存位置可以多线程并发访问,但结构体中的位段例外,如下面的例子。struct {char a;int b:5,c:11,:0,d:8;struct {int ee:8;} e;}a, d, e.ee 都是独立的内存区域,可以多...
2018-11-22 17:07:00
238
原创 VPP代码阅读中文注解---dlmalloc.h
* Quickstart This library is all in one file to simplify the most common usage: ftp it, compile it (-O3), and link it into another program. All of the compile-time options default to reasonabl...
2018-10-19 18:10:47
1109
原创 VPP代码阅读中文注解--dlist.h
双向链表算法。本双向链表的所有元素存储在一个pool中,根据pool中内存块的序号进行索引。typedef struct{ u32 next; u32 prev; u32 value;} dlist_elt_t;本双向链表中每一个元素的结构。value指的是元素的值。next, prev分别代表前一个和后一个元素。它们的语义是元素在内存池中的编号,通俗的说,就是数...
2018-10-19 15:59:37
1273
原创 VPP代码阅读中文注解--crc32.h
static_always_inline u32clib_crc32c (u8 * s, int len){ u32 v = 0;#if __x86_64__ for (; len >= 8; len -= 8, s += 8) v = _mm_crc32_u64 (v, *((u64 *) s));#else /* workaround weird GCC ...
2018-10-19 15:26:29
495
原创 VPP代码阅读中文注解--cpu.c
#define foreach_x86_cpu_uarch \ _(0x06, 0x9e, "Kaby Lake", "Kaby Lake DT/H/S/X") \ _(0x06, 0x8e, "Kaby Lake", "Kaby Lake Y/U") \ _(0x06, 0x85, "Knights Mill", "Knights Mill") \ _(0x06, 0x5f,
2018-10-19 15:14:49
562
原创 VPP代码阅读中文注解---cpu.h
#include <vppinfra/format.h>/* * multiarchitecture support. Adding new entry will produce * new graph node function variant optimized for specific cpu * microarchitecture. * Order is impo...
2018-10-19 14:46:10
1051
原创 VPP代码阅读中文注解---clib_error.h
#include <vppinfra/types.h>typedef struct{ /* Error message. */ u8 *what; /* Where error occurred (e.g. __FUNCTION__ __LINE__) */ const u8 *where; uword flags; /* Error code (...
2018-10-19 13:43:22
531
原创 VPP代码阅读中文注解--cache.h
/* * Allow CFLAGS to override the configured / deduced cache line size */#ifndef CLIB_LOG2_CACHE_LINE_BYTES/* Default cache line size of 64 bytes. */#ifndef CLIB_LOG2_CACHE_LINE_BYTES#define C...
2018-10-19 13:00:59
699
原创 VPP代码阅读中文注解--byte_order.h
处理字节序相关的头文件。比如IP地址 192.168.10.20 这个IP地址。在X86 CPU中处理时,长这样: 0x140aa8c0在网络上传输时,长这样:0xc0a80a14由于网络传输是按照低地址代表most significant byte的语义。这个与x86 这类的CPU刚好相反。所以软件中需要做相应的处理,实际上就是在内存中做字节交换。 #include ...
2018-10-19 11:44:19
606
原创 VPP代码阅读中文注解--pool.c
#include <vppinfra/pool.h>void_pool_init_fixed (void **pool_ptr, u32 elt_size, u32 max_elts){ u8 *mmap_base; u64 vector_size; u64 free_index_size; u64 total_size; u64 page_size; ...
2018-10-19 11:18:37
1050
2
原创 VPP代码阅读中文注解--pool.h
/** @file * @brief Fixed length block allocator. Pools are built from clib vectors and bitmaps. Use pools when repeatedly allocating and freeing fixed-size data. Pools are fast, and avoid m...
2018-10-19 11:00:45
3109
原创 VPP代码阅读中文注解---bitmap.h
/** \file Bitmaps built as vectors of machine words*/#include <vppinfra/vec.h>#include <vppinfra/random.h>#include <vppinfra/error.h>#include <vppinfra/bitops.h> /* ...
2018-10-18 22:50:01
1318
原创 VPP代码阅读中文注解--bitops.h
/* Population count from Hacker's Delight. */always_inline uwordcount_set_bits (uword x){#ifdef __POPCNT__#if uword_bits == 64 return __builtin_popcountll (x);#else return __builtin_popcoun...
2018-10-18 20:19:53
346
原创 VPP代码阅读中文注解--vec.c
#include <vppinfra/vec.h>#include <vppinfra/mem.h>/* Vector resize operator. Called as needed by various macros such as vec_add1() when we need to allocate memory. */void *vec_re...
2018-10-17 12:50:28
1458
原创 VPP代码阅读中文注解--vec.h
/** \file CLIB vectors are ubiquitous dynamically resized arrays with by user defined "headers". Many CLIB data structures (e.g. hash, heap, pool) are vectors with various different header...
2018-10-17 11:37:19
2821
原创 VPP代码阅读中文注解--vec_bootstrap.h
/** \file Vector bootstrap header file*//* Bootstrap include so that #include <vppinfra/mem.h> can include e.g. <vppinfra/mheap.h> which depends on <vppinfra/vec.h>. *//...
2018-10-16 17:57:44
893
原创 VPP代码阅读中文注解--clib.h
#ifndef included_clib_h#define included_clib_h#include <vppinfra/config.h>#define宏定义用于在头文件多次被包含时出现问题此#include暂时不理会它 。 /* Standalone means to not assume we are running on a Unix box....
2018-10-16 17:17:28
1113
原创 VPP代码阅读中文注解(三)
static voidvpe_main_init (vlib_main_t * vm){ void vat_plugin_hash_create (void); if (CLIB_DEBUG > 0) vlib_unix_cli_set_prompt ("DBGvpp# "); else vlib_unix_cli_set_prompt ("vpp# ")...
2018-10-16 11:27:43
827
原创 VPP代码阅读中文注解(二)
clib_mem_init_thread_safe有2个版本。其中一个在mem_mheap.c中void *clib_mem_init_thread_safe (void *memory, uword memory_size){ mheap_t *h; u8 *heap; clib_mem_init (memory, memory_size); heap = cl...
2018-10-16 11:21:27
1271
原创 VPP代码阅读中文注解(一)
一、入口函数位置:/src/vpp/vnet/main.c中的main函数开始。二、代码注解intmain (int argc, char *argv[]){ int i; vlib_main_t *vm = &vlib_global_main; void vl_msg_api_set_first_available_msg_id (u16); uword...
2018-10-16 11:07:53
2183
原创 极简Linux手册--1d
danetool产生和检查DNS资源记录的工具dash一种命令行解释器程序date显示和设置系统日期和时间dd复制文件,并做相应的格式转换deallocvt释放无用的虚拟终端debuginfo-install调试信息安装程序df报告文件系统使用磁盘的情况diff逐行比较文件dirname显示文件的目录名dlltool动态链接库的工具dmesg显示和控制内核环形缓冲区domainnamehostna...
2018-03-31 22:01:54
272
原创 极简linux手册--1c2
colrm从文件中删除列column将输入格式化成多列comm逐行比对2个排序后的文件command执行1个简单的命令comp_err编译生成mysqld(MariaDB)错误消息文件compress压缩数据oredumpctl提取和处理coredump文件的工具cppc语言预处理程序cronnext下一个作业执行的时间crontab为每个用户维护crontab文件,用于指定周期性执行的指令csp...
2018-03-31 21:21:07
176
原创 极简linux手册--1c1
cal显示一个日历callgrind_annotatecallgrind工具的后处理callgrind_controlcallgrind的观察和控制程序cancel取消作业capsh容量相关工具cat将文件拼接起来certtoolGNU TLS认证工具cflow产生C语言数据流图的工具cg_annotatecachegrind的后处理cgcc编译器包装器,同时允许插入静态代码分析工具cg_dif...
2018-03-31 20:40:33
255
原创 极简linux手册--2
linux-pamlinux可动态插入的认证模块lksctp-toolslinux内核sctp协议工具集logrotate日志管理工具lsof列出已经打开的文件ltrace使用trace功能的库lttng用于跟踪linux内核,用户程序,共享库的工具集lvm2逻辑卷标管理第2版lxclinux容器mariaDB类似于MySQL的开源数据库服务器程序ncurses字符终端处理库...
2018-03-31 19:57:01
211
原创 极简Linux手册--1
acl访问控制列表,指的是针对文件和目录的权限控制,属于常规文件权限的超集。可以针对每一个用户,每一个组单独设置权限。attr往XFS文件系统中对象添加或者删除扩展属性auditlinux记账系统,有点像日志信息,但没有日志信息那么多,但比较重要autofs用于自动挂载文件系统,如SMB,NFS,U盘等babeltrace处理进程调试跟踪的库,工具等bash最流行的linux命令解释器binuti...
2018-03-31 19:51:22
358
原创 linux源码阅读--cmdline.c
简单的命令行参数解析static int get_range(char **str, int *pint, int n){ int x, inc_counter, upper_range; (*str)++; upper_range = simple_strtol((*str), NULL, 0); inc_counter = upper_range - *pint; for (x ...
2018-03-28 18:20:48
428
原创 clz_ctz.c
count leading zeros 计算头部连续的0位的数目count trailing zeros 计算尾部连续的0位的数目
2018-03-28 17:07:08
709
原创 linux源码阅读--bitrev.c
本文定义了一个字节中的bit序列反转的查找表。即给定1个字节,给出其2进制bit位反转后的结果。如01101101反转后是10110110。将所有的反转关系保存起来,形成了256个元素的查找表,通过空间换取时间,达到快速反转的效果。...
2018-03-28 14:53:46
489
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人