changes made for resource measurement for 'enc' command. (#41)

Reviewed-on: http://13.234.246.121:3000/Neominds/ossl35vx69/pulls/41
Co-authored-by: siddhant <siddhant.singh@neominds.in>
Co-committed-by: siddhant <siddhant.singh@neominds.in>
This commit is contained in:
2026-07-30 19:57:31 +05:30
committed by neelimap
parent b08ac23f82
commit 8a999ce0ab
4 changed files with 440 additions and 13 deletions
@@ -0,0 +1,67 @@
#include "sysCallStat.h"
extern KRNL_API_STATS API_STATS[sysCallMax];
/* "enc", "-pbkdf2 -aes-256-cbc -in plain.txt -out cipher.enc -kfile keyfile.key" */
void clearSysTableData()
{
int i=0;
for (; i< sysCallMax; i++)
{
API_STATS[i].execTimeUsec=0;
API_STATS[i].sysCallCount=0;
}
}
void sysCallMeasurementTask(const char* cmd, const char* arg)
{
measurementFlag = 1;
shellCmdExec (cmd, arg);
measurementFlag=0;
semBGive(sysCallSemID);
measurementFlag = 0;
displayStats();
}
void CaptureSysCallMetrics(const char* cmd, const char* arg)
{
tsFreq = sysTimestampFreq(); /*Set this once during init and neednot set during every system call execution.*/
sysCallSemID = semBCreate(SEM_Q_FIFO,SEM_EMPTY);
if(!sysCallSemID)
{
printf("CaptureSysCallMetrics: Failed to create semaphore\n");
return ;
}
clearSysTableData();
sysCallTaskID= taskSpawn("tSysCallMeasure",
50, /* priority */
0, /* options */
8192, /* stack */
(FUNCPTR)sysCallMeasurementTask,
cmd, arg,0,0,0,0,0,0,0,0);
if(sysCallTaskID == ERROR) /*This is to avoid parent task in block state if taskSpawn fails to create a task.*/
{
printf("CaptureSysCallMetrics: Failed to create a task\n");
return ;
}
semBTake(sysCallSemID, WAIT_FOREVER); /*As we crated semaphore with SEM_EMPTY, so it is unavilable and gets blocked here for parent and gets unblcoked when child executes semGive().*/
semDelete(sysCallSemID);
}
void displayStats()
{
printf("------------------------------------------------------------------\n");
printf("%-15s %-15s %-15s %-20s\n","crypto cmd","system call","Invocations","Total time (USec)");
printf("------------------------------------------------------------------\n");
printf("%-15s %-15s %-15d %-20lu\n","enc","open",API_STATS[openCall].sysCallCount,API_STATS[openCall].execTimeUsec);
printf("%-15s %-15s %-15d %-20lu\n","enc","close",API_STATS[closeCall].sysCallCount,API_STATS[closeCall].execTimeUsec);
printf("%-15s %-15s %-15d %-20lu\n","enc","read",API_STATS[readCall].sysCallCount,API_STATS[readCall].execTimeUsec );
printf("%-15s %-15s %-15d %-20lu\n","enc","write",API_STATS[writeCall].sysCallCount,API_STATS[writeCall].execTimeUsec);
printf("-------------------------------------------------------------------\n");
}