[修改] 增加freeRTOS
1. 版本FreeRTOSv202212.01,命名为kernel;
This commit is contained in:
@ -0,0 +1,103 @@
|
||||
/* Standard includes. */
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* FreeRTOS includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* FreeRTOS+TCP includes. */
|
||||
#include "FreeRTOS_IP.h"
|
||||
#include "FreeRTOS_Sockets.h"
|
||||
#include "FreeRTOS_IP_Private.h"
|
||||
#include "FreeRTOS_UDP_IP.h"
|
||||
#include "FreeRTOS_DHCP.h"
|
||||
#include "NetworkInterface.h"
|
||||
#include "NetworkBufferManagement.h"
|
||||
#include "FreeRTOS_ARP.h"
|
||||
|
||||
#include "cbmc.h"
|
||||
|
||||
/****************************************************************
|
||||
* Signature of function under test
|
||||
****************************************************************/
|
||||
|
||||
BaseType_t __CPROVER_file_local_FreeRTOS_TCP_IP_c_prvCheckOptions( FreeRTOS_Socket_t * pxSocket,
|
||||
const NetworkBufferDescriptor_t * pxNetworkBuffer );
|
||||
|
||||
/****************************************************************
|
||||
* Declare the buffer size external to the harness so it can be
|
||||
* accessed by the preconditions of prvSingleStepTCPHeaderOptions, and
|
||||
* give the buffer size an unconstrained value in the harness itself.
|
||||
****************************************************************/
|
||||
size_t buffer_size;
|
||||
|
||||
/****************************************************************
|
||||
* Function contract proved correct by CheckOptionsOuter
|
||||
****************************************************************/
|
||||
|
||||
int32_t __CPROVER_file_local_FreeRTOS_TCP_IP_c_prvSingleStepTCPHeaderOptions( const uint8_t * const pucPtr,
|
||||
size_t uxTotalLength,
|
||||
FreeRTOS_Socket_t * const pxSocket,
|
||||
BaseType_t xHasSYNFlag )
|
||||
{
|
||||
/* CBMC model of pointers limits the size of the buffer */
|
||||
|
||||
/* Preconditions */
|
||||
__CPROVER_assert( buffer_size < CBMC_MAX_OBJECT_SIZE,
|
||||
"prvSingleStepTCPHeaderOptions: buffer_size < CBMC_MAX_OBJECT_SIZE" );
|
||||
__CPROVER_assert( 8 <= buffer_size,
|
||||
"prvSingleStepTCPHeaderOptions: 8 <= buffer_size" );
|
||||
__CPROVER_assert( pucPtr != NULL,
|
||||
"prvSingleStepTCPHeaderOptions: pucPtr != NULL" );
|
||||
__CPROVER_assert( uxTotalLength <= buffer_size,
|
||||
"prvSingleStepTCPHeaderOptions: uxTotalLength <= buffer_size" );
|
||||
__CPROVER_assert( pxSocket != NULL,
|
||||
"prvSingleStepTCPHeaderOptions: pxSocket != NULL" );
|
||||
|
||||
/* Postconditions */
|
||||
int32_t index;
|
||||
|
||||
__CPROVER_assume( ( index == -1 ) || ( index == 1 ) || ( index <= uxTotalLength ) );
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
/****************************************************************
|
||||
* Proof of CheckOptions
|
||||
****************************************************************/
|
||||
|
||||
void harness()
|
||||
{
|
||||
/* Give buffer_size an unconstrained value */
|
||||
size_t buf_size;
|
||||
|
||||
buffer_size = buf_size;
|
||||
|
||||
/* pxSocket can be any socket */
|
||||
FreeRTOS_Socket_t pxSocket;
|
||||
|
||||
/* pxNetworkBuffer can be any buffer descriptor with any buffer */
|
||||
NetworkBufferDescriptor_t pxNetworkBuffer;
|
||||
|
||||
pxNetworkBuffer.pucEthernetBuffer = malloc( buffer_size );
|
||||
__CPROVER_assume( pxNetworkBuffer.pucEthernetBuffer != NULL );
|
||||
pxNetworkBuffer.xDataLength = buffer_size;
|
||||
|
||||
/****************************************************************
|
||||
* Specification and proof of CheckOptions
|
||||
****************************************************************/
|
||||
|
||||
/* CBMC model of pointers limits the size of the buffer */
|
||||
__CPROVER_assume( buffer_size < CBMC_MAX_OBJECT_SIZE );
|
||||
|
||||
/* Bound required to bound iteration over the buffer */
|
||||
__CPROVER_assume( buffer_size <= BUFFER_SIZE );
|
||||
|
||||
/* Buffer must be big enough to hold pxTCPPacket and pxTCPHeader */
|
||||
__CPROVER_assume( buffer_size > 47 );
|
||||
|
||||
__CPROVER_file_local_FreeRTOS_TCP_IP_c_prvCheckOptions( &pxSocket, &pxNetworkBuffer );
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
{
|
||||
"ENTRY": "CheckOptions",
|
||||
"CBMCFLAGS":
|
||||
[
|
||||
"--unwind 1",
|
||||
" --unwindset __CPROVER_file_local_FreeRTOS_TCP_IP_c_prvCheckOptions.0:41"
|
||||
],
|
||||
"OBJS":
|
||||
[
|
||||
"$(ENTRY)_harness.goto",
|
||||
"$(FREERTOS_PLUS_TCP)/source/FreeRTOS_IP.goto",
|
||||
"$(FREERTOS_PLUS_TCP)/source/FreeRTOS_TCP_WIN.goto",
|
||||
"$(FREERTOS_PLUS_TCP)/source/FreeRTOS_TCP_IP.goto",
|
||||
"$(FREERTOS_PLUS_TCP)/source/FreeRTOS_Stream_Buffer.goto",
|
||||
"$(FREERTOS_PLUS_TCP)/test/FreeRTOS-Kernel/tasks.goto",
|
||||
"$(FREERTOS_PLUS_TCP)/test/FreeRTOS-Kernel/list.goto"
|
||||
],
|
||||
"BUFFER_SIZE": 100,
|
||||
"DEF":
|
||||
[
|
||||
"BUFFER_SIZE={BUFFER_SIZE}"
|
||||
],
|
||||
"OPT":
|
||||
[
|
||||
"--export-file-local-symbols"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user