]> git.sur5r.net Git - freertos/commitdiff
Add the errno definitions used by FreeRTOS+TCP and FreeRTOS+FAT into FreeRTOS's projd...
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 13 Apr 2015 18:45:02 +0000 (18:45 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Mon, 13 Apr 2015 18:45:02 +0000 (18:45 +0000)
Remove redundant global definition vPortInstallFreeRTOSVectorTable from the GCC ARM_CA9 portASM.S file.
Ensure correct sequence of start up sequence when the Windows port is used on multi-core Windows machines by starting one thread in the suspended state.
Move initialisation of xNextTaskUnblockTime to the function that starts the scheduler, rather than from where the variable is declared - this fixes a compiler warning in newer IAR compilers.
Fix "elif (SELECTED_PORT == PORT_MICROCHIP_PIC32MX || PORT_MICROCHIP_PIC32MZ)" in the FreeRTOS+Trace trcHardwarePort.h header file.

git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2342 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/Include/trcHardwarePort.h
FreeRTOS/Source/include/projdefs.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/include/timers.h
FreeRTOS/Source/portable/GCC/ARM_CA9/portASM.S
FreeRTOS/Source/portable/MSVC-MingW/port.c
FreeRTOS/Source/tasks.c
FreeRTOS/Source/timers.c

index 01ce3a590ecccf9fcf341c14b5bf5ceb9ed88ae7..7c93d4ef4cdf1cdf0d7393cafe589fa2bf177d72 100644 (file)
        #define HWTC_DIVISOR 1\r
        #define IRQ_PRIORITY_ORDER 1 // higher IRQ priority values are more significant\r
 \r
-#elif (SELECTED_PORT == PORT_MICROCHIP_PIC32MX || PORT_MICROCHIP_PIC32MZ)\r
+#elif (SELECTED_PORT == PORT_MICROCHIP_PIC32MX || SELECTED_PORT == PORT_MICROCHIP_PIC32MZ)\r
        \r
        #define HWTC_COUNT_DIRECTION DIRECTION_INCREMENTING\r
        #define HWTC_COUNT (TMR1)\r
index 79ced440f8127e1d34f79e901bdaac819be508a7..2dedeb807c176c7af0fddd2da7131e6408b0ab1d 100644 (file)
@@ -103,7 +103,49 @@ typedef void (*TaskFunction_t)( void * );
        #define pdINTEGRITY_CHECK_VALUE 0x5a5a5a5aUL\r
 #endif\r
 \r
-/* The following endian values are used by FreeRTOS+ components, not FreeRTOS\r
+/* The following errno values are used by FreeRTOS+ components, not FreeRTOS \r
+itself. */\r
+#define pdFREERTOS_ERRNO_NONE                  0       /* No errors */\r
+#define        pdFREERTOS_ERRNO_ENOENT                 2       /* No such file or directory */\r
+#define        pdFREERTOS_ERRNO_EIO                    5       /* I/O error */\r
+#define        pdFREERTOS_ERRNO_ENXIO                  6       /* No such device or address */\r
+#define        pdFREERTOS_ERRNO_EBADF                  9       /* Bad file number */\r
+#define        pdFREERTOS_ERRNO_EAGAIN                 11      /* No more processes */\r
+#define        pdFREERTOS_ERRNO_EWOULDBLOCK    11      /* Operation would block */\r
+#define        pdFREERTOS_ERRNO_ENOMEM                 12      /* Not enough memory */\r
+#define        pdFREERTOS_ERRNO_EACCES                 13      /* Permission denied */\r
+#define        pdFREERTOS_ERRNO_EFAULT                 14      /* Bad address */\r
+#define        pdFREERTOS_ERRNO_EBUSY                  16      /* Mount device busy */\r
+#define        pdFREERTOS_ERRNO_EEXIST                 17      /* File exists */\r
+#define        pdFREERTOS_ERRNO_EXDEV                  18      /* Cross-device link */\r
+#define        pdFREERTOS_ERRNO_ENODEV                 19      /* No such device */\r
+#define        pdFREERTOS_ERRNO_ENOTDIR                20      /* Not a directory */\r
+#define        pdFREERTOS_ERRNO_EISDIR                 21      /* Is a directory */\r
+#define        pdFREERTOS_ERRNO_EINVAL                 22      /* Invalid argument */\r
+#define        pdFREERTOS_ERRNO_ENOSPC                 28      /* No space left on device */\r
+#define        pdFREERTOS_ERRNO_ESPIPE                 29      /* Illegal seek */\r
+#define        pdFREERTOS_ERRNO_EROFS                  30      /* Read only file system */\r
+#define        pdFREERTOS_ERRNO_EUNATCH                42      /* Protocol driver not attached */\r
+#define        pdFREERTOS_ERRNO_EBADE                  50      /* Invalid exchange */\r
+#define        pdFREERTOS_ERRNO_EFTYPE                 79      /* Inappropriate file type or format */\r
+#define        pdFREERTOS_ERRNO_ENMFILE                89      /* No more files */\r
+#define        pdFREERTOS_ERRNO_ENOTEMPTY              90      /* Directory not empty */\r
+#define        pdFREERTOS_ERRNO_ENAMETOOLONG   91      /* File or path name too long */\r
+#define        pdFREERTOS_ERRNO_EOPNOTSUPP             95      /* Operation not supported on transport endpoint */\r
+#define        pdFREERTOS_ERRNO_ENOBUFS                105     /* No buffer space available */\r
+#define        pdFREERTOS_ERRNO_ENOPROTOOPT    109     /* Protocol not available */\r
+#define        pdFREERTOS_ERRNO_EADDRINUSE             112     /* Address already in use */\r
+#define        pdFREERTOS_ERRNO_ETIMEDOUT              116     /* Connection timed out */\r
+#define        pdFREERTOS_ERRNO_EINPROGRESS    119     /* Connection already in progress */\r
+#define        pdFREERTOS_ERRNO_EALREADY               120     /* Socket already connected */\r
+#define        pdFREERTOS_ERRNO_EADDRNOTAVAIL  125     /* Address not available */\r
+#define        pdFREERTOS_ERRNO_EISCONN                127     /* Socket is already connected */\r
+#define        pdFREERTOS_ERRNO_ENOTCONN               128     /* Socket is not connected */\r
+#define        pdFREERTOS_ERRNO_ENOMEDIUM              135     /* No medium inserted */\r
+#define        pdFREERTOS_ERRNO_EILSEQ                 138     /* An invalid UTF-16 sequence was encountered. */\r
+#define        pdFREERTOS_ERRNO_ECANCELED              140     /* Operation canceled. */\r
+\r
+/* The following endian values are used by FreeRTOS+ components, not FreeRTOS \r
 itself. */\r
 #define pdFREERTOS_LITTLE_ENDIAN       0\r
 #define pdFREERTOS_BIG_ENDIAN          1\r
index 672769a9090a56dec89edafd59afe5ca409ad7aa..a62eafc6e8f1c6bceddae7f9a88a1953c17a310c 100644 (file)
@@ -214,7 +214,7 @@ typedef enum
  * \ingroup SchedulerControl\r
  */\r
 #define taskENTER_CRITICAL()           portENTER_CRITICAL()\r
-#define taskENTER_CRITICAL_FROM_ISR( x ) portSET_INTERRUPT_MASK_FROM_ISR( x )\r
+#define taskENTER_CRITICAL_FROM_ISR() portSET_INTERRUPT_MASK_FROM_ISR()\r
 \r
 /**\r
  * task. h\r
@@ -229,7 +229,7 @@ typedef enum
  * \ingroup SchedulerControl\r
  */\r
 #define taskEXIT_CRITICAL()                    portEXIT_CRITICAL()\r
-#define taskEXIT_CRITICAL_FROM_ISR() portCLEAR_INTERRUPT_MASK_FROM_ISR()\r
+#define taskEXIT_CRITICAL_FROM_ISR( x ) portCLEAR_INTERRUPT_MASK_FROM_ISR( x )\r
 /**\r
  * task. h\r
  *\r
index 882a3337108bc3d257eb1edeb013c5280020c3e4..7150b3299dff2559bb53910a0982dc16995f59ad 100644 (file)
@@ -279,7 +279,7 @@ TimerHandle_t xTimerCreate( const char * const pcTimerName, const TickType_t xTi
  *\r
  * See the xTimerCreate() API function example usage scenario.\r
  */\r
-void *pvTimerGetTimerID( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\r
+void *pvTimerGetTimerID( const TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\r
 \r
 /**\r
  * void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID );\r
@@ -300,7 +300,7 @@ void *pvTimerGetTimerID( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
  *\r
  * See the xTimerCreate() API function example usage scenario.\r
  */\r
-void vTimerSetTimerID( const TimerHandle_t xTimer, void *pvNewID ) PRIVILEGED_FUNCTION;\r
+void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID ) PRIVILEGED_FUNCTION;\r
 \r
 /**\r
  * BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer );\r
index 4f521c518385eb93cfd5ce3a845c583c8266dd7c..262b10f1c3242cbe44f382aa504bf11f09191c2b 100644 (file)
@@ -76,7 +76,6 @@
        .global FreeRTOS_IRQ_Handler\r
        .global FreeRTOS_SWI_Handler\r
        .global vPortRestoreTaskContext\r
-       .global vPortInstallFreeRTOSVectorTable\r
 \r
 \r
 \r
index 96dbf78bd609d3587c9a3e81f5e371a611f1f0c3..50051590cc3ee1aba314dff29ff09f2628af0fb0 100644 (file)
@@ -312,12 +312,13 @@ xThreadState *pxThreadState;
                tick interrupts.  The priority is set below that of the simulated\r
                interrupt handler so the interrupt event mutex is used for the\r
                handshake / overrun protection. */\r
-               pvHandle = CreateThread( NULL, 0, prvSimulatedPeripheralTimer, NULL, 0, NULL );\r
+               pvHandle = CreateThread( NULL, 0, prvSimulatedPeripheralTimer, NULL, CREATE_SUSPENDED, NULL );\r
                if( pvHandle != NULL )\r
                {\r
                        SetThreadPriority( pvHandle, THREAD_PRIORITY_BELOW_NORMAL );\r
                        SetThreadPriorityBoost( pvHandle, TRUE );\r
                        SetThreadAffinityMask( pvHandle, 0x01 );\r
+                       ResumeThread( pvHandle );\r
                }\r
 \r
                /* Start the highest priority task by obtaining its associated thread\r
index 426ee2d591f9460d0b848d04ad1493128306ebb4..c07e88f2a05492294d6f52f77bfd9e6cbd7a770a 100644 (file)
@@ -247,7 +247,7 @@ PRIVILEGED_DATA static volatile UBaseType_t uxPendedTicks                   = ( UBaseType_t ) 0
 PRIVILEGED_DATA static volatile BaseType_t xYieldPending                       = pdFALSE;\r
 PRIVILEGED_DATA static volatile BaseType_t xNumOfOverflows                     = ( BaseType_t ) 0;\r
 PRIVILEGED_DATA static UBaseType_t uxTaskNumber                                        = ( UBaseType_t ) 0U;\r
-PRIVILEGED_DATA static volatile TickType_t xNextTaskUnblockTime                = portMAX_DELAY;\r
+PRIVILEGED_DATA static volatile TickType_t xNextTaskUnblockTime                = ( TickType_t ) 0U; /* Initialised to portMAX_DELAY; before the scheduler starts. */\r
 \r
 /* Context switches are held pending while the scheduler is suspended.  Also,\r
 interrupts must not manipulate the xGenericListItem of a TCB, or any of the\r
@@ -1588,6 +1588,7 @@ BaseType_t xReturn;
                }\r
                #endif /* configUSE_NEWLIB_REENTRANT */\r
 \r
+               xNextTaskUnblockTime = portMAX_DELAY;\r
                xSchedulerRunning = pdTRUE;\r
                xTickCount = ( TickType_t ) 0U;\r
 \r
index 7b7a42d90666404b81b54cdb7e01e73a48b9cf07..797b25226aaeec1067c014a7f8e7f24b2942ce47 100644 (file)
@@ -841,7 +841,7 @@ void *pvReturn;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-void vTimerSetTimerID( const TimerHandle_t xTimer, void *pvNewID )\r
+void vTimerSetTimerID( TimerHandle_t xTimer, void *pvNewID )\r
 {\r
 Timer_t * const pxTimer = ( Timer_t * ) xTimer;\r
 \r