// This is the main loop. We log in as the load test user, and then perform random operations until stopped.
-void *loadtest(void *blah) {
+void *loadtest(void *pointer_to_thread_id) {
char buf[SIZ];
int serv_sock;
+ int thread_id = *(int *)pointer_to_thread_id;
+
serv_sock = uds_connectsock(file_citadel_socket);
if (serv_sock < 0) {
serv_gets(serv_sock, buf);
// Find a nice spot on the screen to show the operation count for this thread.
- int row = 10 + ((serv_sock-3) % 20);
- int col = ((serv_sock-3) / 20) * 10;
+ int row = 10 + (thread_id % 20);
+ int col = (thread_id / 20) * 10;
long ops = 0;
printf("\033[%d;%dH\033[33m 0\033[0m", row, col);
fflush(stdout);
for (i=0; i<nthreads; ++i) {
row = 10 + (i % 20);
col = (i / 20) * 10;
- printf("\033[%d;%dH\033[31m--------\033[0m", row, col);
+ printf("\033[%d;%dH\033[31m -\033[0m", row, col);
fflush(stdout);
}
setup_accounts(serv_sock);
close(serv_sock);
- for (i=0; i<(nthreads-1); ++i) {
+ size_t * threadId = calloc(nthreads, sizeof(size_t));
+ for (size_t i = 0; i < nthreads; ++i) {
+ threadId[i] = i;
+ }
+
+ for (i=1; i<nthreads; ++i) {
pthread_t thread;
pthread_attr_t attr;
ret = pthread_attr_init(&attr);
ret = pthread_attr_setstacksize(&attr, THREADSTACKSIZE);
- ret = pthread_create(&thread, &attr, loadtest, NULL);
+ ret = pthread_create(&thread, &attr, loadtest, &threadId[i]);
if (ret != 0) {
exit(ret);
}
}
- loadtest(NULL);
+ loadtest(&threadId[0]);
return(0);
}