📄 os_flag.lst
字号:
\ ??OSFlagDel_1:
\ 000000BC 2870 STRB R0,[R5, #+0]
337 return (pgrp);
\ 000000BE 2000 MOVS R0,R4
\ ??OSFlagDel_3:
\ 000000C0 01B0 ADD SP,SP,#+4
\ 000000C2 F0BC POP {R4-R7}
\ 000000C4 02BC POP {R1}
\ 000000C6 0847 BX R1 ;; return
338 }
339 }
340 #endif
341 /*$PAGE*/
342 /*
343 *********************************************************************************************************
344 * GET THE NAME OF AN EVENT FLAG GROUP
345 *
346 * Description: This function is used to obtain the name assigned to an event flag group
347 *
348 * Arguments : pgrp is a pointer to the event flag group.
349 *
350 * pname is a pointer to an ASCII string that will receive the name of the event flag
351 * group. The string must be able to hold at least OS_FLAG_NAME_SIZE characters.
352 *
353 * err is a pointer to an error code that can contain one of the following values:
354 *
355 * OS_NO_ERR if the requested task is resumed
356 * OS_ERR_EVENT_TYPE if 'pevent' is not pointing to an event flag group
357 * OS_ERR_PNAME_NULL You passed a NULL pointer for 'pname'
358 * OS_FLAG_INVALID_PGRP if you passed a NULL pointer for 'pgrp'
359 *
360 * Returns : The length of the string or 0 if the 'pgrp' is a NULL pointer.
361 *********************************************************************************************************
362 */
363
364 #if OS_FLAG_NAME_SIZE > 1
\ In segment CODE, align 4, keep-with-next
365 INT8U OSFlagNameGet (OS_FLAG_GRP *pgrp, char *pname, INT8U *err)
366 {
\ OSFlagNameGet:
\ 00000000 F0B5 PUSH {R4-R7,LR}
\ 00000002 0600 MOVS R6,R0
\ 00000004 0F00 MOVS R7,R1
\ 00000006 1400 MOVS R4,R2
367 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
368 OS_CPU_SR cpu_sr;
369 #endif
370 INT8U len;
371
372
373 OS_ENTER_CRITICAL();
\ 00000008 ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
\ 0000000C 0500 MOVS R5,R0
374 #if OS_ARG_CHK_EN > 0
375 if (pgrp == (OS_FLAG_GRP *)0) { /* Is 'pgrp' a NULL pointer? */
\ 0000000E 002E CMP R6,#+0
\ 00000010 05D1 BNE ??OSFlagNameGet_0
376 OS_EXIT_CRITICAL(); /* Yes */
\ 00000012 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
377 *err = OS_FLAG_INVALID_PGRP;
\ 00000016 9620 MOVS R0,#+150
\ ??OSFlagNameGet_1:
\ 00000018 2070 STRB R0,[R4, #+0]
378 return (0);
\ 0000001A 0020 MOVS R0,#+0
\ 0000001C 1BE0 B ??OSFlagNameGet_2
379 }
380 if (pname == (char *)0) { /* Is 'pname' a NULL pointer? */
\ ??OSFlagNameGet_0:
\ 0000001E 002F CMP R7,#+0
\ 00000020 03D1 BNE ??OSFlagNameGet_3
381 OS_EXIT_CRITICAL(); /* Yes */
\ 00000022 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
382 *err = OS_ERR_PNAME_NULL;
\ 00000026 0F20 MOVS R0,#+15
\ 00000028 F6E7 B.N ??OSFlagNameGet_1
383 return (0);
384 }
385 #endif
386 if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
\ ??OSFlagNameGet_3:
\ 0000002A 3078 LDRB R0,[R6, #+0]
\ 0000002C 0528 CMP R0,#+5
\ 0000002E 06D0 BEQ ??OSFlagNameGet_4
387 OS_EXIT_CRITICAL();
\ 00000030 2800 MOVS R0,R5
\ 00000032 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
388 *err = OS_ERR_EVENT_TYPE;
\ 00000036 0120 MOVS R0,#+1
\ 00000038 2070 STRB R0,[R4, #+0]
389 return (0);
\ 0000003A 0020 MOVS R0,#+0
\ 0000003C 0BE0 B ??OSFlagNameGet_2
390 }
391 len = OS_StrCopy(pname, pgrp->OSFlagName); /* Copy name from OS_FLAG_GRP */
\ ??OSFlagNameGet_4:
\ 0000003E 0A36 ADDS R6,R6,#+10
\ 00000040 3100 MOVS R1,R6
\ 00000042 3800 MOVS R0,R7
\ 00000044 ........ _BLF OS_StrCopy,??OS_StrCopy??rT
\ 00000048 0600 MOVS R6,R0
392 OS_EXIT_CRITICAL();
\ 0000004A 2800 MOVS R0,R5
\ 0000004C ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
393 *err = OS_NO_ERR;
\ 00000050 0020 MOVS R0,#+0
\ 00000052 2070 STRB R0,[R4, #+0]
394 return (len);
\ 00000054 3000 MOVS R0,R6
\ ??OSFlagNameGet_2:
\ 00000056 F0BC POP {R4-R7}
\ 00000058 02BC POP {R1}
\ 0000005A 0847 BX R1 ;; return
395 }
396 #endif
397
398 /*$PAGE*/
399 /*
400 *********************************************************************************************************
401 * ASSIGN A NAME TO AN EVENT FLAG GROUP
402 *
403 * Description: This function assigns a name to an event flag group.
404 *
405 * Arguments : pgrp is a pointer to the event flag group.
406 *
407 * pname is a pointer to an ASCII string that will be used as the name of the event flag
408 * group. The string must be able to hold at least OS_FLAG_NAME_SIZE characters.
409 *
410 * err is a pointer to an error code that can contain one of the following values:
411 *
412 * OS_NO_ERR if the requested task is resumed
413 * OS_ERR_EVENT_TYPE if 'pevent' is not pointing to an event flag group
414 * OS_ERR_PNAME_NULL You passed a NULL pointer for 'pname'
415 * OS_FLAG_INVALID_PGRP if you passed a NULL pointer for 'pgrp'
416 *
417 * Returns : None
418 *********************************************************************************************************
419 */
420
421 #if OS_FLAG_NAME_SIZE > 1
\ In segment CODE, align 4, keep-with-next
422 void OSFlagNameSet (OS_FLAG_GRP *pgrp, char *pname, INT8U *err)
423 {
\ OSFlagNameSet:
\ 00000000 F0B5 PUSH {R4-R7,LR}
\ 00000002 0500 MOVS R5,R0
\ 00000004 0E00 MOVS R6,R1
\ 00000006 1400 MOVS R4,R2
424 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
425 OS_CPU_SR cpu_sr;
426 #endif
427 INT8U len;
428
429
430 OS_ENTER_CRITICAL();
\ 00000008 ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
\ 0000000C 0700 MOVS R7,R0
431 #if OS_ARG_CHK_EN > 0
432 if (pgrp == (OS_FLAG_GRP *)0) { /* Is 'pgrp' a NULL pointer? */
\ 0000000E 002D CMP R5,#+0
\ 00000010 03D1 BNE ??OSFlagNameSet_0
433 OS_EXIT_CRITICAL(); /* Yes */
\ 00000012 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
434 *err = OS_FLAG_INVALID_PGRP;
\ 00000016 9620 MOVS R0,#+150
\ 00000018 20E0 B.N ??OSFlagNameSet_1
435 return;
436 }
437 if (pname == (char *)0) { /* Is 'pname' a NULL pointer? */
\ ??OSFlagNameSet_0:
\ 0000001A 002E CMP R6,#+0
\ 0000001C 03D1 BNE ??OSFlagNameSet_2
438 OS_EXIT_CRITICAL(); /* Yes */
\ 0000001E ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
439 *err = OS_ERR_PNAME_NULL;
\ 00000022 0F20 MOVS R0,#+15
\ 00000024 1AE0 B.N ??OSFlagNameSet_1
440 return;
441 }
442 #endif
443 if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {
\ ??OSFlagNameSet_2:
\ 00000026 2878 LDRB R0,[R5, #+0]
\ 00000028 0528 CMP R0,#+5
\ 0000002A 04D0 BEQ ??OSFlagNameSet_3
444 OS_EXIT_CRITICAL();
\ 0000002C 3800 MOVS R0,R7
\ 0000002E ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
445 *err = OS_ERR_EVENT_TYPE;
\ 00000032 0120 MOVS R0,#+1
\ 00000034 12E0 B.N ??OSFlagNameSet_1
446 return;
447 }
448 len = OS_StrLen(pname); /* Can we fit the string in the storage area? */
\ ??OSFlagNameSet_3:
\ 00000036 3000 MOVS R0,R6
\ 00000038 ........ _BLF OS_StrLen,??OS_StrLen??rT
449 if (len > (OS_FLAG_NAME_SIZE - 1)) { /* No */
\ 0000003C 2028 CMP R0,#+32
\ 0000003E 04D3 BCC ??OSFlagNameSet_4
450 OS_EXIT_CRITICAL();
\ 00000040 3800 MOVS R0,R7
\ 00000042 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
451 *err = OS_ERR_FLAG_NAME_TOO_LONG;
\ 00000046 0D20 MOVS R0,#+13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -