⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_sem.lst

📁 AVR平台下的ucos版本
💻 LST
📖 第 1 页 / 共 3 页
字号:
 315 00aa 0E94 0000 		call OS_EventTaskWait
 275:os/source/os_sem.c ****     OS_EXIT_CRITICAL();
 317               	.LM29:
 318               	/* #APP */
 319 00ae 7894      		sei
 276:os/source/os_sem.c ****     OS_Sched();                                       /* Find next highest priority task ready     
 321               	.LM30:
 322               	/* #NOAPP */
 323 00b0 0E94 0000 		call OS_Sched
 277:os/source/os_sem.c ****     OS_ENTER_CRITICAL();
 325               	.LM31:
 326               	/* #APP */
 327 00b4 F894      		cli
 278:os/source/os_sem.c ****     if (OSTCBCur->OSTCBStat & OS_STAT_SEM) {          /* Must have timed out if still waiting for e
 329               	.LM32:
 330               	/* #NOAPP */
 331 00b6 E091 0000 		lds r30,OSTCBCur
 332 00ba F091 0000 		lds r31,(OSTCBCur)+1
 333 00be 808D      		ldd r24,Z+24
 334 00c0 9927      		clr r25
 335 00c2 9C01      		movw r18,r24
 336 00c4 2170      		andi r18,lo8(1)
 337 00c6 3070      		andi r19,hi8(1)
 338 00c8 80FF      		sbrs r24,0
 339 00ca 08C0      		rjmp .L10
 279:os/source/os_sem.c ****         OS_EventTO(pevent);
 341               	.LM33:
 342 00cc CE01      		movw r24,r28
 343 00ce 0E94 0000 		call OS_EventTO
 280:os/source/os_sem.c ****         OS_EXIT_CRITICAL();
 345               	.LM34:
 346               	/* #APP */
 347 00d2 7894      		sei
 281:os/source/os_sem.c ****         *err = OS_TIMEOUT;                            /* Indicate that didn't get event within TO  
 349               	.LM35:
 350               	/* #NOAPP */
 351 00d4 8AE0      		ldi r24,lo8(10)
 352               	.L12:
 353 00d6 F801      		movw r30,r16
 354 00d8 8083      		st Z,r24
 282:os/source/os_sem.c ****         return;
 356               	.LM36:
 357 00da 05C0      		rjmp .L7
 358               	.L10:
 283:os/source/os_sem.c ****     }
 284:os/source/os_sem.c ****     OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0;
 360               	.LM37:
 361 00dc 338B      		std Z+19,r19
 362 00de 228B      		std Z+18,r18
 363               	.L11:
 285:os/source/os_sem.c ****     OS_EXIT_CRITICAL();
 365               	.LM38:
 366               	/* #APP */
 367 00e0 7894      		sei
 286:os/source/os_sem.c ****     *err = OS_NO_ERR;
 369               	.LM39:
 370               	/* #NOAPP */
 371 00e2 F801      		movw r30,r16
 372 00e4 F082      		st Z,r15
 373               	.L7:
 374               	/* epilogue: frame size=0 */
 375 00e6 DF91      		pop r29
 376 00e8 CF91      		pop r28
 377 00ea 1F91      		pop r17
 378 00ec 0F91      		pop r16
 379 00ee FF90      		pop r15
 380 00f0 0895      		ret
 381               	/* epilogue end (size=6) */
 382               	/* function OSSemPend size 77 (66) */
 384               	.Lscope2:
 387               	.global	OSSemPost
 389               	OSSemPost:
 287:os/source/os_sem.c **** }
 288:os/source/os_sem.c **** /*$PAGE*/
 289:os/source/os_sem.c **** /*
 290:os/source/os_sem.c **** ***************************************************************************************************
 291:os/source/os_sem.c **** *                                         POST TO A SEMAPHORE
 292:os/source/os_sem.c **** *
 293:os/source/os_sem.c **** * Description: This function signals a semaphore
 294:os/source/os_sem.c **** *
 295:os/source/os_sem.c **** * Arguments  : pevent        is a pointer to the event control block associated with the desired
 296:os/source/os_sem.c **** *                            semaphore.
 297:os/source/os_sem.c **** *
 298:os/source/os_sem.c **** * Returns    : OS_NO_ERR           The call was successful and the semaphore was signaled.
 299:os/source/os_sem.c **** *              OS_SEM_OVF          If the semaphore count exceeded its limit.  In other words, you 
 300:os/source/os_sem.c **** *                                  signalled the semaphore more often than you waited on it with ei
 301:os/source/os_sem.c **** *                                  OSSemAccept() or OSSemPend().
 302:os/source/os_sem.c **** *              OS_ERR_EVENT_TYPE   If you didn't pass a pointer to a semaphore
 303:os/source/os_sem.c **** *              OS_ERR_PEVENT_NULL  If 'pevent' is a NULL pointer.
 304:os/source/os_sem.c **** ***************************************************************************************************
 305:os/source/os_sem.c **** */
 306:os/source/os_sem.c **** 
 307:os/source/os_sem.c **** INT8U  OSSemPost (OS_EVENT *pevent)
 308:os/source/os_sem.c **** {
 391               	.LM40:
 392               	/* prologue: frame size=0 */
 393               	/* prologue end (size=0) */
 394 00f2 FC01      		movw r30,r24
 309:os/source/os_sem.c **** #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status regis
 310:os/source/os_sem.c ****     OS_CPU_SR  cpu_sr;                               
 311:os/source/os_sem.c **** #endif    
 312:os/source/os_sem.c **** 
 313:os/source/os_sem.c **** 
 314:os/source/os_sem.c **** #if OS_ARG_CHK_EN > 0
 315:os/source/os_sem.c ****     if (pevent == (OS_EVENT *)0) {                         /* Validate 'pevent'                    
 316:os/source/os_sem.c ****         return (OS_ERR_PEVENT_NULL);
 317:os/source/os_sem.c ****     }
 318:os/source/os_sem.c ****     if (pevent->OSEventType != OS_EVENT_TYPE_SEM) {        /* Validate event block type            
 319:os/source/os_sem.c ****         return (OS_ERR_EVENT_TYPE);
 320:os/source/os_sem.c ****     }
 321:os/source/os_sem.c **** #endif
 322:os/source/os_sem.c ****     OS_ENTER_CRITICAL();
 396               	.LM41:
 397               	/* #APP */
 398 00f4 F894      		cli
 323:os/source/os_sem.c ****     if (pevent->OSEventGrp != 0x00) {                      /* See if any task waiting for semaphore
 400               	.LM42:
 401               	/* #NOAPP */
 402 00f6 8181      		ldd r24,Z+1
 403 00f8 8823      		tst r24
 404 00fa 51F0      		breq .L14
 324:os/source/os_sem.c ****         OS_EventTaskRdy(pevent, (void *)0, OS_STAT_SEM);   /* Ready highest prio task waiting on ev
 406               	.LM43:
 407 00fc 41E0      		ldi r20,lo8(1)
 408 00fe 60E0      		ldi r22,lo8(0)
 409 0100 70E0      		ldi r23,hi8(0)
 410 0102 CF01      		movw r24,r30
 411 0104 0E94 0000 		call OS_EventTaskRdy
 325:os/source/os_sem.c ****         OS_EXIT_CRITICAL();
 413               	.LM44:
 414               	/* #APP */
 415 0108 7894      		sei
 326:os/source/os_sem.c ****         OS_Sched();                                   /* Find highest priority task ready to run   
 417               	.LM45:
 418               	/* #NOAPP */
 419 010a 0E94 0000 		call OS_Sched
 420 010e 0AC0      		rjmp .L16
 421               	.L14:
 327:os/source/os_sem.c ****         return (OS_NO_ERR);
 328:os/source/os_sem.c ****     }
 329:os/source/os_sem.c ****     if (pevent->OSEventCnt < 65535) {                 /* Make sure semaphore will not overflow     
 423               	.LM46:
 424 0110 8281      		ldd r24,Z+2
 425 0112 9381      		ldd r25,Z+3
 426 0114 2FEF      		ldi r18,hi8(-1)
 427 0116 8F3F      		cpi r24,lo8(-1)
 428 0118 9207      		cpc r25,r18
 429 011a 39F0      		breq .L15
 330:os/source/os_sem.c ****         pevent->OSEventCnt++;                         /* Increment semaphore count to register even
 431               	.LM47:
 432 011c 0196      		adiw r24,1
 433 011e 9383      		std Z+3,r25
 434 0120 8283      		std Z+2,r24
 331:os/source/os_sem.c ****         OS_EXIT_CRITICAL();
 436               	.LM48:
 437               	/* #APP */
 438 0122 7894      		sei
 439               	/* #NOAPP */
 440               	.L16:
 332:os/source/os_sem.c ****         return (OS_NO_ERR);
 442               	.LM49:
 443 0124 80E0      		ldi r24,lo8(0)
 444 0126 90E0      		ldi r25,hi8(0)
 445 0128 0895      		ret
 446               	.L15:
 333:os/source/os_sem.c ****     }
 334:os/source/os_sem.c ****     OS_EXIT_CRITICAL();                               /* Semaphore value has reached its maximum   
 448               	.LM50:
 449               	/* #APP */
 450 012a 7894      		sei
 335:os/source/os_sem.c ****     return (OS_SEM_OVF);
 452               	.LM51:
 453               	/* #NOAPP */
 454 012c 82E3      		ldi r24,lo8(50)
 455 012e 90E0      		ldi r25,hi8(50)
 336:os/source/os_sem.c **** }
 457               	.LM52:
 458 0130 0895      		ret
 459               	/* epilogue: frame size=0 */
 460               	/* epilogue: noreturn */
 461               	/* epilogue end (size=0) */
 462               	/* function OSSemPost size 36 (36) */
 464               	.Lscope3:
 465               		.text
 467               	Letext:
 468               	/* File "os/source/os_sem.c": code  166 = 0x00a6 ( 149), prologues   7, epilogues  10 */
DEFINED SYMBOLS
                            *ABS*:00000000 os_sem.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:3      *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:4      *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:5      *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:133    .text:00000000 OSSemAccept
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:177    .text:00000018 OSSemCreate
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:259    .text:00000062 OSSemPend
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:389    .text:000000f2 OSSemPost
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc8Iaaaa.s:467    .text:00000132 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
OSIntNesting
OSEventFreeList
OS_EventWaitListInit
OSTCBCur
OS_EventTaskWait
OS_Sched
OS_EventTO
OS_EventTaskRdy

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -