更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_strnlen_user.h 文件参考

浏览源代码.

函数

INT32 LOS_StrnlenUser (const CHAR *src, INT32 count)
 

函数说明

◆ LOS_StrnlenUser()

INT32 LOS_StrnlenUser ( const CHAR src,
INT32  count 
)

在文件 strnlen_user.c37 行定义.

38{
39 CHAR character;
40 INT32 maxCount;
41 INT32 i;
42 size_t offset = 0;
43
44 if ((!LOS_IsUserAddress((VADDR_T)(UINTPTR)src)) || (count <= 0)) {
45 return 0;
46 }
47
48 maxCount = (LOS_IsUserAddressRange((VADDR_T)(UINTPTR)src, (size_t)count)) ? \
49 count : (USER_ASPACE_TOP_MAX - (UINTPTR)src);
50
51 for (i = 0; i < maxCount; ++i) {
52 if (LOS_GetUser(&character, src + offset) != LOS_OK) {
53 return 0;
54 }
55 ++offset;
56 if (character == '\0') {
57 return offset;
58 }
59 }
60
61 return count + 1;
62}
signed int INT32
Definition: los_typedef.h:60
unsigned long VADDR_T
Definition: los_typedef.h:208
unsigned long UINTPTR
Definition: los_typedef.h:68
char CHAR
Definition: los_typedef.h:63
STATIC INLINE BOOL LOS_IsUserAddressRange(VADDR_T vaddr, size_t len)
虚拟地址[vaddr,vaddr + len]是否在用户空间
Definition: los_vm_map.h:281
STATIC INLINE BOOL LOS_IsUserAddress(VADDR_T vaddr)
虚拟地址是否在用户空间
Definition: los_vm_map.h:275
函数调用图:
这是这个函数的调用关系图: