Man, Jianting (Meco)
41631fe712
modify version to v4.1.1 ( #5847 )
2022-04-20 15:31:51 +08:00
Meco Man
5e9f525c41
[kernel] enable RT_DEBUG_DEVICE by default and move weak rt_hw_dealy_us in kservice.c
2022-04-19 11:26:41 +08:00
Man, Jianting (Meco)
11344b89d9
attach #5815 ( #5818 )
2022-04-15 17:08:44 +08:00
Man, Jianting (Meco)
03823b5016
[kconfig] add 64bit default value for stack size. set tick HZ as 1000 by default ( #5778 )
...
* [kconfig] add 64bit default value for stack size. set tick HZ as 1000 by default
* 用RT_KSERVICE_USING_STDLIB_MEMXXX代替RT_KSERVICE_USING_STDLIB_MEMCP/MEMSET
将RT_KSERVICE_USING_STDLIB设置为默认开启
* 优化rt_kprintf支持longlong的能力,默认在64位CPU为开启状态
RT_PRINTF_LONGLONG命名不规范,更改为RT_KPRINTF_USING_LONGLONG
* fix commit error
* fix error
* 优化 system 函数
* RT_KSERVICE_USING_STDLIB_MEMXXX->RT_KSERVICE_USING_STDLIB_MEMORY
2022-04-09 00:40:36 +08:00
Tangyuxin
da3d61e043
[device]Detailed classification of devices types ( #5769 )
2022-04-06 21:12:39 +08:00
Tangyuxin
78ac851c31
[rtdef] Add BGR888 pixel format ( #5765 )
2022-04-03 14:40:59 +08:00
guo
b2e2ab28e5
[update] Fix some spelling mistakes. ( #5738 )
2022-03-29 21:29:08 +08:00
GUI
f587a55bc2
[libcpu/aarch64] add gicv3 support and bsp/rockchip/rk3568 ( #5722 )
...
* [libcpu/aarch64] add smp support
* [libcpu/aarch64] rt_hw_trap_irq get irq instead of iar when using gicv2
* [libcpu/aarch64] disable irq/fiq when switch thread
* [libcpu/aarch64] add gtimer frq set and stack align
* [libcpu/aarch64] add gicv3 support and bsp/rockchip/rk3568
2022-03-29 11:08:25 +08:00
Meco Man
6cf3256d4c
[device.c] fix the comment, add RT_DEBUG_LOG
2022-03-27 23:19:25 -04:00
Wayne
a65e6d1613
Nuvoton drivers updating and more LVGL supporting. ( #5647 )
2022-03-12 07:00:53 +08:00
张世争
7746d288d7
优化bsp/simulator自动初始化 ( #5634 )
2022-03-08 12:03:41 +08:00
tyustli
5178e7ec0b
[add] src/clock.c add hook for rt_tick_increase ( #5569 )
...
* [add] src/clock.c add hook for rt_tick_increase
* [fix] clock.c rt_tick_incerase hook function
* Update clock.c
Co-authored-by: guo <guozhanxin@rt-thread.com>
2022-02-13 14:50:51 +08:00
guo
580194f5f0
Merge pull request #4740 from Guozhanxin/scheduler_check
2022-01-28 16:38:32 +08:00
Meco Man
e9fac0c012
remove outdated comment
2022-01-28 01:48:41 -05:00
Henson
500d26c257
optimize code
2022-01-26 21:39:06 +08:00
guozhanxin
9b44535740
add RT_DEBUG_SCHEDULER_AVAILABLE check
2022-01-26 16:03:31 +08:00
xiangxistu
075e04e344
the support for PSE51 ( #5534 )
...
* [add] the function realization of signal for posix.
* [update] the posix support for armclang.
* [add] the new macro "RT_USING_POSIX_TIMER".
* [modify] select "RT_USING_SOFT_TIMER" when use posix'timer.
* [bug] optimize the logic for the "time_xxx" functions.
* [modify] use "RT_USING_POSIX_TIMER" to protect the macro definition.
* [modify] error code when except happened.
* [delete] the "environ" is useless at this time.
2022-01-20 20:53:47 +08:00
Meco Man
211090203b
[kernel] remove RT_THREAD_BLOCK
2022-01-14 23:04:22 +08:00
Bernard Xiong
43e7186a99
Merge pull request #5443 from mysterywolf/removeinit
...
[kernel] remove .init_priority
2022-01-14 22:55:54 +08:00
guo
ac4b5e1216
Merge pull request #5503 from whj4674672/notes
...
update notes
2022-01-13 15:42:39 +08:00
Man, Jianting (Meco)
c6852aa306
Merge branch 'master' into removeinit
2022-01-10 14:25:46 -05:00
wanghaijing
2fa44bdef4
update notes
2022-01-10 18:03:00 +08:00
Gabriel Wang
844f2ef76f
Merge branch 'master' into master
2022-01-08 20:07:54 +00:00
Meco Man
dd62b2b106
[kservice] 增加RT_KSERVICE_USING_STDLIB_MEMSET RT_KSERVICE_USING_STDLIB_MEMCPY
2022-01-09 00:23:18 +08:00
tangyuxin
09f439bcc2
[memheap] Fix 64 bit potential risk
2022-01-08 15:50:14 +08:00
Gabriel Wang
d7b8cf81e6
move some __on_rt_xxxxx_hook from rtdef.h to dedicated c soure files
2022-01-07 23:35:44 +00:00
Gabriel Wang
b627414f67
Improving hooking methods
...
- Backward compatible with existing function-pointer based hooking method
- Using RT_USING_HOOK as an on/off switch
- Introducing a new low-overhead macro-based hooking method
2022-01-05 15:48:42 +08:00
guo
2d28f925ca
Merge pull request #5468 from balanceTWK/master_rtt
2022-01-04 18:48:32 +08:00
guo
05c30fde05
Merge pull request #5451 from mysterywolf/armcc
2022-01-04 18:46:03 +08:00
balanceTWK
2babae231f
[include/rtthread.h] Add function declarations to avoid compilation warnings.
2022-01-03 22:30:45 +08:00
Bernard Xiong
634a06c3cb
Revert "[kernel] Add __attribute__(...) for rt_kprintf() to let the compiler check the format string parameters"
...
This reverts commit d2e6715ddb
.
2021-12-30 09:06:46 +08:00
Bernard Xiong
2fa1a93497
Revert "Add support for IAR Compiler"
...
This reverts commit ead24644f0
.
2021-12-30 09:06:46 +08:00
Meco Man
5187d75af5
[armclang] 使用__clang__代替__CLANG_ARM
2021-12-29 14:15:38 -05:00
weycen
ead24644f0
Add support for IAR Compiler
2021-12-30 01:42:57 +08:00
weycen
d2e6715ddb
[kernel] Add __attribute__(...) for rt_kprintf() to let the compiler check the format string parameters
...
Tested in the following environment:
1. Keil uVersion:Arm Compiler v5.06、v6.7、v6.16
2. Atollic TrueSTUDIO for STM32:GNU v6.3.1
3. Code Composer Studio:TI Compiler v20.2.2.LTS、GNU v7.2.1
2021-12-30 01:42:57 +08:00
Wayne Lin
e8f4208bb2
Update LVGLv81 porting.
...
1. Add RTGRAPHIC_CTRL_PAN_DISPLAY and RTGRAPHIC_CTRL_WAIT_VSYNC control command.
2. Add calibration data of 480x272 ADC touching.
3. Add 480x272 LCD panel menu option and driver.
4. Update lv_conf.h.
2021-12-30 01:39:17 +08:00
Meco Man
e6cd32a1ad
[kernel] 将rt_thread_timeout设置为私有函数
2021-12-30 01:30:21 +08:00
Meco Man
1f2e93f1a3
[kernel] remove .init_priority
2021-12-27 20:34:35 -05:00
Meco Man
2c1077692b
[rtdef] 将defined(__CC_ARM) || defined(__CLANG_ARM)并为defined(__ARMCC_VERSION)
2021-12-27 00:51:22 +08:00
Meco Man
923fb0c146
[rtdef] re-implement RT_UNUSED
2021-12-27 00:51:22 +08:00
Meco Man
457348e21a
[kservice] implement rt_strcpy()
2021-12-22 13:04:45 +08:00
Tangyuxin
d724eed9fc
分离内存分配接口与内存分配算法 ( #5175 )
...
* [kernel][mem] Multiple instances of small memory allocation algorithm
* [kernel][mem] Change small memory management algorithm memory header flag
* [kernel][mem] Fix assertion problem
* [kernel][slab] Multiple instances of slab memory management algorithm
* [kernel][memheap] Remove rt_malloc/rt_free/rt_realloc and other related memory interfaces
* [kernel][mem] Clean up memory space of small memory management objects
* [kernel][kservice] Add memory application interface and thread protection interface
* [kernel][kservice] Fix function return value problem
* [kernel][memheap] Optimize memheaptrace print
* [kernel][memheap] Support best mode
* [kernel][memory] Remove semaphore lock
* [kernel][memheap] Add locked flag
* [kernel][memory] Support malloc memory in interrupt
* [kernel][memheap] Add 'memheapcheck' cmd
* [kernel][mem] Fix failure to request full memory
* [kernel][memheap] Fix compilation warning
* [kernel][mem] Fix mem realloc ASSERT
* [examples][testcases] Add small mem testcase
* [examples][mem_tc] Modify test memory size
* [examples][testcases] Add slab memory management algorithm test case
* [examples][testcases] fix small memory management algorithm test case
* [kernel][memory] Adjusting memory allocation algorithm object definition and interface
* [kernel][memory] Fix compilation warning
* [examples][utest] Fix mem test case
* [examples][utest] fix slab test case
* [utest][testcases] Shorten test time
* [kernel][memory] Formatting code
* [examples][utest] Adjust test run time
* [examples][utest] Formatting code
* [bsp] update all rtconfig.h
2021-12-16 16:23:58 +08:00
Meco Man
7c789d4b11
revise some RT_USING_POSIX to RT_USING_POSIX_DEVIO
2021-11-24 09:47:55 -05:00
Bernard Xiong
6a6b43fe3e
Merge pull request #5261 from mysterywolf/weak
...
[kernel] prepare to support full functional sprintf-family functions
2021-11-24 17:38:15 +08:00
Bernard Xiong
f11113f557
Merge pull request #5277 from mysterywolf/compatibility
...
implement legacy support
2021-11-24 17:37:25 +08:00
Meco Man
cefc77ad11
modify rt_size_t's type
2021-11-22 19:16:11 -05:00
Meco Man
cc44316410
[master] modify version to v4.1.0
2021-11-19 17:27:43 -05:00
Meco Man
e82fe76a0f
fix rt_size_t as rt_uint32_t
2021-11-16 12:06:55 -05:00
Meco Man
5e19b71eca
将返回值类型由signed int改为int,符合ISO C标准,防止编译器报错
2021-11-16 03:41:26 -05:00
Meco Man
c6c1544c84
implement legacy support
2021-11-14 23:51:05 -05:00
Meco Man
f8388c572e
add RT_USING_POSIX_STDIO
2021-11-07 23:41:16 -05:00
Meco Man
f7548b934e
[posix][dfs] move dfs_posix dfs_poll dfs_select.c to posix folder
2021-10-21 19:05:53 -04:00
mazhiyuan
d006905c88
修改size_t为rt_size_t
2021-10-13 16:23:06 +08:00
Meco Man
663991897b
fixed bug #5138
2021-10-12 21:47:57 -04:00
armink
a4619732df
[DeviceDriver] Change the special device commands form 0x1X to 0x2X. It will avoid same of general device commands.
2021-09-29 17:15:40 +08:00
Meco Jianting Man
717120549d
Merge branch 'RT-Thread:master' into rtusingheap
2021-09-14 10:30:51 -05:00
Bernard Xiong
8da9f78d72
[libc] remove rtlibc
2021-09-11 11:07:51 +08:00
Meco Man
aab382c32e
[rtlibc] remove libc_dirent.h
2021-08-30 22:39:14 -04:00
马志远
221da7f464
Remove C Style Command Shell
2021-08-23 17:30:05 +08:00
Man, Jianting (Meco)
3e6578916f
Merge branch 'master' into security
2021-08-17 16:56:10 -05:00
lymzzyh
1e51b40d57
Add device type USBOTG to redef.h
2021-08-13 16:29:37 +08:00
Meco Man
fc094e9211
[rtlibc] remove libc_signal.h and libc_fdset.h
2021-07-21 19:42:38 +08:00
guozhanxin
40e7d5a23d
Merge remote-tracking branch 'remotes/gitee/master'
2021-07-12 10:14:20 +08:00
iysheng
a2a7f3c2d9
[components][rtc] Add RTC framework V2.0 to simplify RTC registration process
2021-07-08 22:41:06 +08:00
fenghuijie
0015af02e4
调整代码,以支持cpu usage
2021-07-05 18:33:22 +08:00
fenghuijie
e933c1f610
调整异常处理代码结构,以支持backtrace功能
2021-07-05 14:43:33 +08:00
Bernard Xiong
3dfebe337a
[kernel] remove switchto_sethook
2021-07-03 18:48:15 +08:00
fenghuijie
05bb1a50b0
添加idle回收资源的修改
2021-07-03 17:54:58 +08:00
Bernard Xiong
8a23d0ccf2
Merge pull request #4796 from mysterywolf/__CLANG_ARM
...
将defined(__CC_ARM) || defined(__CLANG_ARM) 改为 ifdef __ARMCC_VERSION
2021-06-24 21:05:05 +08:00
Meco Man
43a80193c4
[rtlibc] remove libc_stdio.h
2021-06-21 21:59:48 +08:00
Meco Man
41875c17ff
[rtthread.h] 移除rt_sscanf声明
2021-06-17 23:20:44 +08:00
Meco Man
921e606426
将defined(__CC_ARM) || defined(__CLANG_ARM) 改为 ifdef __ARMCC_VERSION
2021-06-13 17:36:42 +08:00
Meco Jianting Man
4fd4074617
Merge branch 'RT-Thread:master' into ioctl
2021-06-13 16:19:59 +08:00
guo
b516cbd2ae
Merge pull request #4790 from mysterywolf/errno
...
[master][rtlibc] remove libc_errno.h & libc_limits.h
2021-06-13 09:36:29 +08:00
Meco Man
8b82b83482
[kernel] 增加rt_mutex_trytake
2021-05-30 11:47:33 +08:00
Meco Jianting Man
393d7f4479
[revert] remove rt_thread_exit
2021-05-29 16:37:52 +08:00
Meco Man
99f57bcd00
[kernel] rtthread.h 增加#ifdef RT_USING_HEAP 预编译
2021-05-28 22:46:49 +08:00
Meco Man
0e32728a5d
[libc][rtlibc] remove libc_ioctl.h
2021-05-23 00:17:08 +08:00
Meco Man
a5f7635f31
remove libc_errno.h & libc_limits.h
2021-05-22 02:50:35 +08:00
armink
c61419b69b
Update the version number to 4.0.4
2021-05-10 09:10:54 +08:00
Meco Man
40c09fc1e0
重新分类为common文件夹下属all文件夹和excgcc文件夹
2021-04-21 00:56:36 +08:00
Meco Man
9d401ea8b0
重新整理libc重复共用文件,创建common_for_all 和 common_for_keiliar
2021-04-18 00:51:07 +08:00
Meco Man
8e2a456d7a
implement set_timeval
2021-04-15 14:01:55 +08:00
armink
b027ad8b2e
[DeviceDriver] Add get/set microsecond time control command
2021-04-14 20:06:39 +08:00
Bernard Xiong
a98d81ab9f
Merge pull request #4559 from enkiller/0220-1044
...
[bsp][simulator] 支持自动初始化及用户 main 入口
2021-04-02 18:37:29 +08:00
Bernard Xiong
c3978ed9ce
Merge pull request #4396 from mysterywolf/kservice
...
[kernel] add RT_KSERVICE_USING_STDLIB
2021-04-02 18:24:25 +08:00
tangyuxin
015418fa9b
[bsp][simulator] 支持自动初始化及用户 main 入口
2021-04-01 17:01:14 +08:00
crazt
7272da20c2
[toolchain] fix TASKING toolchain attributes .
2021-03-23 19:11:22 +08:00
crazt
2517907b48
[toolchain] TASKING toolchain attributes update.
2021-03-20 10:42:47 +08:00
Meco Man
37a9231e62
[kernel][devices] add security devices
2021-03-19 13:26:12 +08:00
Meco Man
846102efa1
[kernel][device] remove rt_device_init_all()
2021-03-19 03:01:07 +08:00
Bernard Xiong
b9fca2fced
Merge pull request #4411 from yangfasheng/master
...
【更新】调整图形设备驱动相关定义
2021-03-12 08:32:46 +08:00
iysheng
f3283ff8df
[rtdbg] Fix compile error when using LOG_HEX(...) function but RT_USING_ULOG not defined
2021-03-11 14:22:29 +08:00
Meco Man
2fd265406e
[include] auto formatted
2021-03-08 17:22:21 +08:00
yangfasheng
2892faccc8
【更新】调整图形设备驱动相关定义
...
Signed-off-by: yangfasheng <yangfasheng@live.com>
2021-03-05 10:08:49 +08:00
Meco Man
58f000bdce
修改拼写错误
2021-03-01 23:58:04 +08:00
Meco Man
ced9b44e63
update
2021-02-28 19:05:14 +08:00
Meco Man
00cebaacac
add RT_KERVICE_USING_STDLIB
2021-02-28 05:07:02 +08:00
cliff-cmc
eea0c3d74a
Add memtrace command for memheap.c
2021-02-26 11:45:19 +08:00
liruncong
f5ede64c83
[include]SECTION=>RT_SECTION(与catch2中SECTION冲突)
2021-02-09 23:25:16 +08:00
tangweikang
b1cdc3a2cb
[toolchain] Added support for the TASKING toolchain.
2021-02-07 12:06:02 +08:00
Meco Man
11fc8d27c1
re-format libc_ioctl.h
2021-01-01 17:00:52 +08:00
Meco Man
63cd26b0d1
update
2020-12-30 16:32:20 +08:00
Meco Man
c2e15e003c
add function rt_hw_1ms_tick_get()
2020-12-29 00:08:24 +08:00
guozhanxin
a22decb71b
【优化】在代码中移除 rt_system_object_init/rt_system_tick_init 的调用。
2020-11-23 11:39:38 +08:00
Bernard Xiong
065488e746
Merge pull request #3956 from xfwangqiang/gcc-fix
...
[Components]&&[BSP][imxrt]add ethernet configuration for imxrt1064-nxp-evk
2020-11-13 07:10:16 +08:00
mysterywolf
98f0cfbf6e
define maximum value of ipc type
2020-10-23 01:04:06 +08:00
WangQiang
502378cf93
1. 抽象了PHY的设备模型,在components中增加了PHY设备的相关代码以及KCONFIG配置和SConscript脚本
...
2. 在IMXRT的Libraries中增加了peripherals目录,用于具体型号的设备驱动相关的代码的实现,不应与MCU的平台相关,实现PHY的设备对象中的相关接口。
3. 修改了BSP中的Sconstruct文件,增加了peripherals目录的构建
4. 修改了KEIL环境的SCT文件,用于实现以太网功能
2020-10-12 19:17:00 +08:00
mysterywolf
c7aa6f0619
[fix bug] #3902
2020-10-02 12:00:52 +08:00
mysterywolf
ff097f0467
增加 __GNUC__宏定义 和sconscript的平台识别以避免重复定义
2020-09-08 13:16:49 +08:00
mysterywolf
0eadf69f81
增加rtconfig.h头文件
2020-09-06 12:31:42 +08:00
mysterywolf
0d7d1fbbf7
修改include/libc头文件版权信息格式
2020-09-05 22:05:16 +08:00
mysterywolf
443978eb78
增加RT_USING_POSIX_GETLINE用于单独控制是否启用getline函数,并修改Kconfig增加对应选项
2020-09-05 19:47:34 +08:00
mysterywolf
cf00e7f0a1
增加 RT_USING_POSIX
2020-09-05 18:10:30 +08:00
mysterywolf
d5d8b345f4
修改libc_signal.h 该文件中不能用rt_数据类型,否则会引起编译器递归编译
2020-09-05 16:59:53 +08:00
mysterywolf
6fa049ee3d
add libc_stdio.h
2020-09-05 16:21:00 +08:00
mysterywolf
74ab1551fd
add posix 2008 limit.h
2020-09-05 16:14:21 +08:00
Meco
5e92521e0d
struct rt_device_ops 结构体增加宏定义
2020-08-10 04:35:08 +08:00
chenchaoqun
224c3224c7
[format] enumeration define two styles: define first or all.
2020-07-27 14:11:35 +08:00
Bernard Xiong
fe2e9e924e
[libc] fix 64bit issue for pthreads
2020-06-06 13:21:32 +08:00
Bernard Xiong
310517b818
[Kernel] Code cleanup
2020-04-10 00:02:57 +08:00
Bernard Xiong
b1eb3943a3
[Kernel] Add rt_object_get_length/rt_object_get_pointers APIs.
2020-04-10 00:01:58 +08:00
Bernard Xiong
c1a3de7b8a
Merge pull request #3478 from SummerLife/optimize_uart
...
[stm32/driver] optimize uart driver
2020-03-26 22:04:45 +08:00
lihui
d0ebdc54d4
fix return type error of rt_strcasecmp: rt_uint32_t to rt_int32_t
...
Signed-off-by: lihui <leehui_hrbeu71102@163.com>
2020-03-24 18:59:31 +08:00
SummerGift
e5c1183350
[optimize] stm32 uart driver
2020-03-23 15:44:54 +08:00
armink
c2f15ae1cc
[rtdbg] Add for cpp support.
2020-02-26 10:01:49 +08:00
longtengmcu
720d8479a5
给软件定时器增加定时器工作状态查询的功能
2020-02-07 16:43:39 +08:00
Bernard Xiong
64945ba882
[Kernel] Update version number.
2019-12-20 08:24:45 +08:00
Bernard Xiong
01fa184f9a
Merge pull request #3275 from BernardXiong/delayUtil
...
Delay until
2019-12-19 11:04:40 +08:00
Bernard Xiong
2c1f7b73a7
[Kernel] fix typo in rthread_delay
2019-12-19 09:45:58 +08:00
Bernard Xiong
b5e4aa58e0
[Kernel] Fix the signal compiling issue when using minilibc
2019-12-18 23:06:36 +08:00
Bernard Xiong
4a14b8f59a
[Kernel] Add delay_util implementation.
2019-12-18 21:38:26 +08:00
Bernard Xiong
992d3af3ae
[kernel] code and comments cleanup
2019-12-16 13:59:46 +08:00
Bernard Xiong
da7751c044
Merge pull request #3129 from jesven/fix_same_prio
...
修正相同优先级任务切换太频繁的问题
2019-11-12 22:47:18 +08:00
shaojinchun
e03ac83ad3
将yield状态置于tcb的stat位域中
2019-11-05 08:41:38 +08:00
Dryad
baeda71eaa
修复了g++编译器无法展开自动初始化宏的错误
2019-10-28 10:38:05 +08:00
shaojinchun
234af6aaa2
修正相同优先级任务切换太频繁的问题
2019-10-12 10:51:47 +08:00
Bernard Xiong
5cd6509296
[Kernel] cleanup code of spinlock in SMP Kernel
2019-09-28 11:56:03 +08:00
shaojinchun
cb07e5fb24
开放spinlock相关函数
2019-09-27 14:38:33 +08:00
tangyuxin
e4671d2916
[kernel][ipc] add send wait support for message queue
2019-09-19 10:10:02 +08:00
Bernard Xiong
ae7a33c27c
Merge pull request #3077 from jesven/fix_mempool
...
修正rt_mp_free有可能唤醒一个错误任务指针的问题
2019-09-17 14:11:14 +08:00
shaojinchun
ae1fdc70f0
修正rt_mp_free有可能唤醒一个错误任务指针的问题
2019-09-16 16:55:40 +08:00
zhangjun
b69ce64286
改回O_DIRCTORY与O_NONBLOCK,解决O_DIRCOTY与newlib中O_BINARY的相同定义
2019-08-20 09:16:42 +08:00
zhangjun
00d7cd66f2
fixup two macro definition in include/libc/libc_fcntl.h
2019-08-10 16:32:31 +08:00
tyx
c8e27adf1f
[src][ipc]完善 message queue 相关定义
2019-07-09 21:34:56 +08:00
tyustli
89b90592ee
add touch framework
2019-06-12 09:38:32 +08:00
Bernard Xiong
b4e141fee1
Update rtdef.h
2019-05-17 08:34:10 +08:00
Bernard Xiong
bb506e8493
[pthreads] Add spinlock declare and fix code issue.
2019-05-12 21:44:28 +08:00
shaojinchun
c5249157d7
增加signal的状态位说明及一处代码修改,以防止编译警告
2019-05-11 09:35:26 +08:00
shaojinchun
6cdfb2ac92
fix signal code
2019-05-11 09:34:26 +08:00