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

📄 os_core.lst

📁 atmega单片机用的ucos系统 占用内存适中 是atmega单片机合适的操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
 156:OSsrc/os_core.c ****         case OS_EVENT_TYPE_MBOX:
 157:OSsrc/os_core.c ****         case OS_EVENT_TYPE_Q:
 158:OSsrc/os_core.c ****              break;
 159:OSsrc/os_core.c **** 
 160:OSsrc/os_core.c ****         default:
 161:OSsrc/os_core.c ****              OS_EXIT_CRITICAL();
 162:OSsrc/os_core.c ****              *err = OS_ERR_EVENT_TYPE;
 163:OSsrc/os_core.c ****              return (0);
 164:OSsrc/os_core.c ****     }
 165:OSsrc/os_core.c ****     len  = OS_StrCopy(pname, pevent->OSEventName);    /* Copy name from OS_EVENT                   
 166:OSsrc/os_core.c ****     OS_EXIT_CRITICAL();
 167:OSsrc/os_core.c ****     *err = OS_NO_ERR;
 168:OSsrc/os_core.c ****     return (len);
 169:OSsrc/os_core.c **** }
 170:OSsrc/os_core.c **** #endif
 171:OSsrc/os_core.c **** 
 172:OSsrc/os_core.c **** /*$PAGE*/
 173:OSsrc/os_core.c **** /*
 174:OSsrc/os_core.c **** ***************************************************************************************************
 175:OSsrc/os_core.c **** *                         ASSIGN A NAME TO A SEMAPHORE, MUTEX, MAILBOX or QUEUE
 176:OSsrc/os_core.c **** *
 177:OSsrc/os_core.c **** * Description: This function assigns a name to a semaphore, mutex, mailbox or queue.
 178:OSsrc/os_core.c **** *
 179:OSsrc/os_core.c **** * Arguments  : pevent    is a pointer to the event group.  'pevent' can point either to a semaphore
 180:OSsrc/os_core.c **** *                        a mutex, a mailbox or a queue.  Where this function is concerned, it doesn
 181:OSsrc/os_core.c **** *                        matter the actual type.
 182:OSsrc/os_core.c **** *
 183:OSsrc/os_core.c **** *              pname     is a pointer to an ASCII string that will be used as the name of the semap
 184:OSsrc/os_core.c **** *                        mutex, mailbox or queue.  The string must be able to hold at least 
 185:OSsrc/os_core.c **** *                        OS_EVENT_NAME_SIZE characters.
 186:OSsrc/os_core.c **** *
 187:OSsrc/os_core.c **** *              err       is a pointer to an error code that can contain one of the following values
 188:OSsrc/os_core.c **** *
 189:OSsrc/os_core.c **** *                        OS_NO_ERR                  if the requested task is resumed
 190:OSsrc/os_core.c **** *                        OS_ERR_EVENT_TYPE          if 'pevent' is not pointing to the proper event
 191:OSsrc/os_core.c **** *                                                   control block type.
 192:OSsrc/os_core.c **** *                        OS_ERR_PNAME_NULL          You passed a NULL pointer for 'pname'
 193:OSsrc/os_core.c **** *                        OS_ERR_PEVENT_NULL         if you passed a NULL pointer for 'pevent'
 194:OSsrc/os_core.c **** *
 195:OSsrc/os_core.c **** * Returns    : None
 196:OSsrc/os_core.c **** ***************************************************************************************************
 197:OSsrc/os_core.c **** */
 198:OSsrc/os_core.c **** 
 199:OSsrc/os_core.c **** #if OS_EVENT_EN && (OS_EVENT_NAME_SIZE > 1)
 200:OSsrc/os_core.c **** void  OSEventNameSet (OS_EVENT *pevent, char *pname, INT8U *err)
 201:OSsrc/os_core.c **** {
 202:OSsrc/os_core.c ****     INT8U      len;
 203:OSsrc/os_core.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 204:OSsrc/os_core.c ****     OS_CPU_SR  cpu_sr;
 205:OSsrc/os_core.c **** 
 206:OSsrc/os_core.c **** 
 207:OSsrc/os_core.c **** 
 208:OSsrc/os_core.c ****     cpu_sr = 0;                                  /* Prevent compiler warning                       
 209:OSsrc/os_core.c **** #endif    
 210:OSsrc/os_core.c ****     OS_ENTER_CRITICAL();
 211:OSsrc/os_core.c **** #if OS_ARG_CHK_EN > 0
 212:OSsrc/os_core.c ****     if (pevent == (OS_EVENT *)0) {               /* Is 'pevent' a NULL pointer?                    
 213:OSsrc/os_core.c ****         OS_EXIT_CRITICAL();                      /* Yes                                            
 214:OSsrc/os_core.c ****         *err = OS_ERR_PEVENT_NULL;
 215:OSsrc/os_core.c ****         return;
 216:OSsrc/os_core.c ****     }
 217:OSsrc/os_core.c ****     if (pname == (char *)0) {                    /* Is 'pname' a NULL pointer?                     
 218:OSsrc/os_core.c ****         OS_EXIT_CRITICAL();                      /* Yes                                            
 219:OSsrc/os_core.c ****         *err = OS_ERR_PNAME_NULL;
 220:OSsrc/os_core.c ****         return;
 221:OSsrc/os_core.c ****     }
 222:OSsrc/os_core.c **** #endif
 223:OSsrc/os_core.c ****     switch (pevent->OSEventType) {
 224:OSsrc/os_core.c ****         case OS_EVENT_TYPE_SEM:
 225:OSsrc/os_core.c ****         case OS_EVENT_TYPE_MUTEX:
 226:OSsrc/os_core.c ****         case OS_EVENT_TYPE_MBOX:
 227:OSsrc/os_core.c ****         case OS_EVENT_TYPE_Q:
 228:OSsrc/os_core.c ****              break;
 229:OSsrc/os_core.c **** 
 230:OSsrc/os_core.c ****         default:
 231:OSsrc/os_core.c ****              OS_EXIT_CRITICAL();
 232:OSsrc/os_core.c ****              *err = OS_ERR_EVENT_TYPE;
 233:OSsrc/os_core.c ****              return;
 234:OSsrc/os_core.c ****     }
 235:OSsrc/os_core.c ****     len = OS_StrLen(pname);                           /* Can we fit the string in the storage area?
 236:OSsrc/os_core.c ****     if (len > (OS_EVENT_NAME_SIZE - 1)) {             /* No                                        
 237:OSsrc/os_core.c ****         OS_EXIT_CRITICAL();
 238:OSsrc/os_core.c ****         *err = OS_ERR_EVENT_NAME_TOO_LONG;
 239:OSsrc/os_core.c ****         return;
 240:OSsrc/os_core.c ****     } 
 241:OSsrc/os_core.c ****     (void)OS_StrCopy(pevent->OSEventName, pname);     /* Yes, copy name to the event control block 
 242:OSsrc/os_core.c ****     OS_EXIT_CRITICAL();
 243:OSsrc/os_core.c ****     *err = OS_NO_ERR;
 244:OSsrc/os_core.c **** }
 245:OSsrc/os_core.c **** #endif
 246:OSsrc/os_core.c **** 
 247:OSsrc/os_core.c **** /*$PAGE*/
 248:OSsrc/os_core.c **** /*
 249:OSsrc/os_core.c **** ***************************************************************************************************
 250:OSsrc/os_core.c **** *                                             INITIALIZATION
 251:OSsrc/os_core.c **** *
 252:OSsrc/os_core.c **** * Description: This function is used to initialize the internals of uC/OS-II and MUST be called pri
 253:OSsrc/os_core.c **** *              creating any uC/OS-II object and, prior to calling OSStart().
 254:OSsrc/os_core.c **** *
 255:OSsrc/os_core.c **** * Arguments  : none
 256:OSsrc/os_core.c **** *
 257:OSsrc/os_core.c **** * Returns    : none
 258:OSsrc/os_core.c **** ***************************************************************************************************
 259:OSsrc/os_core.c **** */
 260:OSsrc/os_core.c **** 
 261:OSsrc/os_core.c **** void  OSInit (void)
 262:OSsrc/os_core.c **** {
 263:OSsrc/os_core.c **** #if OS_VERSION >= 204
 264:OSsrc/os_core.c ****     OSInitHookBegin();                                           /* Call port specific initializati
 265:OSsrc/os_core.c **** #endif
 266:OSsrc/os_core.c **** 
 267:OSsrc/os_core.c ****     OS_InitMisc();                                               /* Initialize miscellaneous variab
 268:OSsrc/os_core.c **** 
 269:OSsrc/os_core.c ****     OS_InitRdyList();                                            /* Initialize the Ready List      
 270:OSsrc/os_core.c **** 
 271:OSsrc/os_core.c ****     OS_InitTCBList();                                            /* Initialize the free list of OS_
 272:OSsrc/os_core.c **** 
 273:OSsrc/os_core.c ****     OS_InitEventList();                                          /* Initialize the free list of OS_
 274:OSsrc/os_core.c **** 
 275:OSsrc/os_core.c **** #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
 276:OSsrc/os_core.c ****     OS_FlagInit();                                               /* Initialize the event flag struc
 277:OSsrc/os_core.c **** #endif
 278:OSsrc/os_core.c **** 
 279:OSsrc/os_core.c **** #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
 280:OSsrc/os_core.c ****     OS_MemInit();                                                /* Initialize the memory manager  
 281:OSsrc/os_core.c **** #endif
 282:OSsrc/os_core.c **** 
 283:OSsrc/os_core.c **** #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
 284:OSsrc/os_core.c ****     OS_QInit();                                                  /* Initialize the message queue st
 285:OSsrc/os_core.c **** #endif
 286:OSsrc/os_core.c **** 
 287:OSsrc/os_core.c ****     OS_InitTaskIdle();                                           /* Create the Idle Task           
 288:OSsrc/os_core.c **** #if OS_TASK_STAT_EN > 0
 289:OSsrc/os_core.c ****     OS_InitTaskStat();                                           /* Create the Statistic Task      
 290:OSsrc/os_core.c **** #endif
 291:OSsrc/os_core.c **** 
 292:OSsrc/os_core.c **** #if OS_VERSION >= 204
 293:OSsrc/os_core.c ****     OSInitHookEnd();                                             /* Call port specific init. code  
 294:OSsrc/os_core.c **** #endif
 295:OSsrc/os_core.c **** 
 296:OSsrc/os_core.c **** #if OS_VERSION >= 270 && OS_DEBUG_EN > 0
 297:OSsrc/os_core.c ****     OSDebugInit();
 298:OSsrc/os_core.c **** #endif
 299:OSsrc/os_core.c **** }
 300:OSsrc/os_core.c **** /*$PAGE*/
 301:OSsrc/os_core.c **** /*
 302:OSsrc/os_core.c **** ***************************************************************************************************
 303:OSsrc/os_core.c **** *                                              ENTER ISR
 304:OSsrc/os_core.c **** *
 305:OSsrc/os_core.c **** * Description: This function is used to notify uC/OS-II that you are about to service an interrupt
 306:OSsrc/os_core.c **** *              service routine (ISR).  This allows uC/OS-II to keep track of interrupt nesting and 
 307:OSsrc/os_core.c **** *              only perform rescheduling at the last nested ISR.
 308:OSsrc/os_core.c **** *
 309:OSsrc/os_core.c **** * Arguments  : none
 310:OSsrc/os_core.c **** *
 311:OSsrc/os_core.c **** * Returns    : none
 312:OSsrc/os_core.c **** *
 313:OSsrc/os_core.c **** * Notes      : 1) This function should be called ith interrupts already disabled
 314:OSsrc/os_core.c **** *              2) Your ISR can directly increment OSIntNesting without calling this function becaus
 315:OSsrc/os_core.c **** *                 OSIntNesting has been declared 'global'.  
 316:OSsrc/os_core.c **** *              3) You MUST still call OSIntExit() even though you increment OSIntNesting directly.
 317:OSsrc/os_core.c **** *              4) You MUST invoke OSIntEnter() and OSIntExit() in pair.  In other words, for every 
 318:OSsrc/os_core.c **** *                 to OSIntEnter() at the beginning of the ISR you MUST have a call to OSIntExit() a
 319:OSsrc/os_core.c **** *                 end of the ISR.
 320:OSsrc/os_core.c **** *              5) You are allowed to nest interrupts up to 255 levels deep.
 321:OSsrc/os_core.c **** *              6) I removed the OS_ENTER_CRITICAL() and OS_EXIT_CRITICAL() around the increment bec
 322:OSsrc/os_core.c **** *                 OSIntEnter() is always called with interrupts disabled.
 323:OSsrc/os_core.c **** ***************************************************************************************************
 324:OSsrc/os_core.c **** */
 325:OSsrc/os_core.c **** 
 326:OSsrc/os_core.c **** void  OSIntEnter (void)
 327:OSsrc/os_core.c **** {
 328:OSsrc/os_core.c ****     if (OSRunning == TRUE) {
 329:OSsrc/os_core.c ****         if (OSIntNesting < 255u) {
 330:OSsrc/os_core.c ****             OSIntNesting++;                      /* Increment ISR nesting level                    
 331:OSsrc/os_core.c ****         }
 332:OSsrc/os_core.c ****     }
 333:OSsrc/os_core.c **** }
 334:OSsrc/os_core.c **** /*$PAGE*/
 335:OSsrc/os_core.c **** /*
 336:OSsrc/os_core.c **** ***************************************************************************************************
 337:OSsrc/os_core.c **** *                                               EXIT ISR
 338:OSsrc/os_core.c **** *
 339:OSsrc/os_core.c **** * Description: This function is used to notify uC/OS-II that you have completed serviving an ISR.  
 340:OSsrc/os_core.c **** *              the last nested ISR has completed, uC/OS-II will call the scheduler to determine whe
 341:OSsrc/os_core.c **** *              a new, high-priority task, is ready to run.
 342:OSsrc/os_core.c **** *
 343:OSsrc/os_core.c **** * Arguments  : none
 344:OSsrc/os_core.c **** *
 345:OSsrc/os_core.c **** * Returns    : none
 346:OSsrc/os_core.c **** *
 347:OSsrc/os_core.c **** * Notes      : 1) You MUST invoke OSIntEnter() and OSIntExit() in pair.  In other words, for every 
 348:OSsrc/os_core.c **** *                 to OSIntEnter() at the beginning of the ISR you MUST have a call to OSIntExit() a
 349:OSsrc/os_core.c **** *                 end of the ISR.
 350:OSsrc/os_core.c **** *              2) Rescheduling is prevented when the scheduler is locked (see OS_SchedLock())
 351:OSsrc/os_core.c **** ***************************************************************************************************
 352:OSsrc/os_core.c **** */
 353:OSsrc/os_core.c **** 
 354:OSsrc/os_core.c **** void  OSIntExit (void)
 355:OSsrc/os_core.c **** {
 356:OSsrc/os_core.c ****     INT8U      y;
 357:OSsrc/os_core.c **** #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status regis
 358:OSsrc/os_core.c ****     OS_CPU_SR  cpu_sr;
 359:OSsrc/os_core.c ****     
 360:OSsrc/os_core.c ****     
 361:OSsrc/os_core.c **** 
 362:OSsrc/os_core.c ****     cpu_sr = 0;                                            /* Prevent compiler warning             
 363:OSsrc/os_core.c **** #endif    
 364:OSsrc/os_core.c ****     if (OSRunning == TRUE) {
 365:OSsrc/os_core.c ****         OS_ENTER_CRITICAL();
 366:OSsrc/os_core.c ****         if (OSIntNesting > 0) {                            /* Prevent OSIntNesting from wrapping   
 367:OSsrc/os_core.c ****             OSIntNesting--;
 368:OSsrc/os_core.c ****         }
 369:OSsrc/os_core.c ****         if (OSIntNesting == 0) {                           /* Reschedule only if all ISRs complete 
 370:OSsrc/os_core.c ****             if (OSLockNesting == 0) {                      /* ... and not locked.                  
 371:OSsrc/os_core.c ****                 #ifndef ALL_IN_ROM
 372:OSsrc/os_core.c **** 				y             = OSUnMapTbl[OSRdyGrp];          
 373:OSsrc/os_core.c **** 				OSPrioHighRdy = (INT8U)((y << 3) + OSUnMapTbl[OSRdyTbl[y]]);
 374:OSsrc/os_core.c ****                 #else

⌨️ 快捷键说明

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