📄 testqueue.c
字号:
#include "queue.h"#include <string.h>#include <strings.h>#include <unistd.h>#define ErrQuit printf#define MacShmKey 0x3e9#define MacShmSize 40void usage(){ printf("testqueue utility\n"); printf("\nusage: testqueue <r[role]> <t[times]> <s[size]> \n"); printf(" -Options:\n"); printf(" r[role] utility role\n"); printf(" 'r'-read 'w'-write 'l' -list \n"); printf(" s[size] size \n"); printf(" t[times] Times to operate memory\n"); printf(" p if p the package will be printed \n");} #define MacReadRole 0#define MacWriteRole 1#define MacLookRole 2void vReadFunc( void* pvQueue, int nIter, int nSize, int nPOpt );void vWriteFunc( void* pvQueue, int nIter, int nSize, int nPOpt );void vLookFunc( void* pvQueue, int nIter, int nSize, int nPOpt );void* g_pAddr;int g_nShmId;int main( int argc, char* argv[] ){ int i; int nRole; /*角色*/ int nIter; /*重复次数*/ int nPOpt; /*打印选项*/ int nSize; /*长度*/ int nRet; if (argc < 2) { usage(); exit(1); } for(i=1; i<argc; i++){ if(!strncmp(argv[i], "rr", 2)) nRole = MacReadRole; if(!strncmp(argv[i], "rw", 2)) nRole = MacWriteRole; if(!strncmp(argv[i], "rl", 2)) nRole = MacLookRole; if(!strncmp(argv[i], "s", 1)){ const char* const parm = &argv[i][1]; nSize = atoi(parm); } if(!strncmp(argv[i], "t", 1)){ const char* const parm = &argv[i][1]; nIter = atoi(parm); } if(!strncmp(argv[i], "p", 1)){ nPOpt = 1; } } g_pAddr = pvInitAQueue_Api( MacShmKey, MacShmSize, 40, &g_nShmId ); switch( nRole ) { case MacReadRole : vReadFunc( g_pAddr, nIter, nSize, nPOpt ); break; case MacWriteRole : for( i=0; i<nIter; ++i ) { vWriteFunc( g_pAddr, 1, nSize, nPOpt ); vReadFunc( g_pAddr, 1, nSize, nPOpt ); nSize++; } vWriteFunc( g_pAddr, 1, nSize, nPOpt ); vDumpQueue_Api( stdout, g_pAddr ); nRet = nResetQueue_Api( g_pAddr ); printf( "nRet = %d, after nReset \n", nRet ); vDumpQueue_Api( stdout, g_pAddr ); break; case MacLookRole : vLookFunc( g_pAddr, nIter, nSize, nPOpt ); break; default: printf("invalid role \n"); break; } return 0;}void vReadFunc( void* pvQueue, int nIter, int nSize, int nPOpt ){ int i; int nRet; void* pAddr; char* pMem; char* pMemp; int j;// int nShmID; pAddr = pvQueue; /*pvInitAQueue( MacShmKey, MacShmSize, 1, &nShmID );*/ if ( nRet < 0 ) { DPrintf("Error When nInitMore\n" ); } pMem = (char*) malloc( nSize ); if ( pMem == NULL ) { ErrQuit( "Error in malloc Quit \n" ); } for( i=0; i<nIter; i++ ) { memset( pMem, 0, nSize ); pMemp = pMem; nRet = nReadQueue_Api( pAddr , pMem, nSize ); if ( nRet <= 0 ) { DPrintf("nRet = %d after nReadQueue ", nRet); return ; } if ( nPOpt == 1 ) { vDumpQueue_Api( NULL, pAddr ); } for( j=0; j<nRet; j++ ) { if ( j%16 == 0 ) printf("\n\t"); printf("[%2d]", (unsigned char)*pMemp ); pMemp++; } printf("\n"); } free( pMem ); }void vWriteFunc( void* pvQueue, int nIter, int nSize, int nPOpt ){ int i; int nRet; void* pAddr; char* pMem; char* pMemp;// int nShmId; pAddr = pvQueue; //pAddr = pvInitAQueue( MacShmKey, MacShmSize, 1, &nShmId ); pMem = (char*) malloc( nSize ); if ( pMem == NULL ) { ErrQuit( "Error in malloc Quit \n" ); } pMemp = pMem; for( i=0; i<nSize; i++ ) { *pMemp = (char)i; pMemp++; } for( i=0; i<nIter; i++ ) { nRet = nWriteQueue_Api( pAddr, pMem, nSize ); if ( nRet != 0 ) { } if ( nPOpt == 1 ) { vDumpQueue_Api( NULL, pAddr ); } DPrintf("nRet = %d after nWriteQueue ", nRet); } free( pMem ); return ; }void vLookFunc( void* pvQueue, int nIter, int nSize, int nPOpt ){ void* pAddr;// int nShmId; pAddr = pvQueue; //pAddr = pvInitAQueue( MacShmKey, MacShmSize, 1, &nShmId ); while( 1 ) { vDumpQueue_Api( NULL, pAddr ); sleep(1); break; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -