@@ -112,6 +112,59 @@ int test_getpid(char *str, int len)
112
112
return TEST_FAILURE ;
113
113
}
114
114
115
+ void check_latency (long (* f )(void ), long * min , long * max , long * avg )
116
+ {
117
+ int i ;
118
+ unsigned long long start , stop , sum = 0 ;
119
+ static const int count = 1000 ;
120
+ long delta ;
121
+
122
+ * min = 1000000000 ;
123
+ * max = -1 ;
124
+
125
+ for (i = 0 ; i < count ; i ++ ) {
126
+ start = lkl_host_ops .time ();
127
+ f ();
128
+ stop = lkl_host_ops .time ();
129
+ delta = stop - start ;
130
+ if (* min > delta )
131
+ * min = delta ;
132
+ if (* max < delta )
133
+ * max = delta ;
134
+ sum += delta ;
135
+ }
136
+ * avg = sum / count ;
137
+ }
138
+
139
+ static long native_getpid (void )
140
+ {
141
+ #ifdef __MINGW32__
142
+ GetCurrentProcessId ();
143
+ #else
144
+ getpid ();
145
+ #endif
146
+ return 0 ;
147
+ }
148
+
149
+ int test_syscall_latency (char * str , int len )
150
+ {
151
+ long min , max , avg ;
152
+ int tmp ;
153
+
154
+ check_latency (lkl_sys_getpid , & min , & max , & avg );
155
+
156
+ tmp = snprintf (str , len , "avg/min/max lkl: %ld/%ld/%ld " ,
157
+ avg , min , max );
158
+ str += tmp ;
159
+ len -= tmp ;
160
+
161
+ check_latency (native_getpid , & min , & max , & avg );
162
+
163
+ snprintf (str , len , "native: %ld/%ld/%ld" , avg , min , max );
164
+
165
+ return TEST_SUCCESS ;
166
+ }
167
+
115
168
#define access_rights 0721
116
169
117
170
int test_creat (char * str , int len )
@@ -676,6 +729,7 @@ static void test_thread(void *data)
676
729
fprintf (stderr , "%s: %s\n" , __func__ , lkl_strerror (ret ));
677
730
}
678
731
732
+ lkl_stop_syscall_thread ();
679
733
}
680
734
681
735
static int test_syscall_thread (char * str , int len )
@@ -817,9 +871,10 @@ int main(int argc, char **argv)
817
871
if (cla .tap_ifname )
818
872
TEST (netdev_add );
819
873
#endif /* __MINGW32__ */
820
- lkl_start_kernel (& lkl_host_ops , 16 * 1024 * 1024 , "" );
874
+ lkl_start_kernel (& lkl_host_ops , 16 * 1024 * 1024 , "loglevel=8 " );
821
875
822
876
TEST (getpid );
877
+ TEST (syscall_latency );
823
878
TEST (umask );
824
879
TEST (creat );
825
880
TEST (close );
0 commit comments