Index: tools/busy.c
===================================================================
--- tools/busy.c	(revision 2c39855bddf43ce2f61ae044cbfd41671259ed85)
+++ tools/busy.c	(revision c0bf94ec8b5f4f0f6a4ac9de014bc1d596f29233)
@@ -1,3 +1,4 @@
 #include <stdbool.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <pthread.h>
@@ -31,14 +32,32 @@
 }
 
-int main() {
-    while(true) {
-	    pthread_t t[15];
-	    for(int i = 0; i < 15; i++) {
-		    pthread_create( &t[i], NULL, CallingMalloc, NULL );
-	    }
+int main(int argc, const char * const argv[]) {
+	char * endptr;
+	int nThreads = 15;
+	switch(argc) {
+	case 1:
+		break;
+	case 2:
+		nThreads = strtol(argv[1], &endptr, 10);
+		if( *endptr != 0 || nThreads <= 0 ) {
+			fprintf(stderr, "Invalid number of threads %s\n", argv[1]);
+			return 1;
+		}
+		break;
+	default:
+		fprintf(stderr, "Usage: %s [no of threads]\n", argv[0]);
+		return 1;
+	}
+	printf("Running %d threads\n", nThreads);
+	while(true) {
+		pthread_t t[nThreads];
+		for(int i = 0; i < nThreads; i++) {
+			pthread_create( &t[i], NULL, CallingMalloc, NULL );
+		}
 
-	    for(int i = 0; i < 15; i++) {
-		    pthread_join( t[i], NULL );
-	    }
-    }
+		for(int i = 0; i < nThreads; i++) {
+			pthread_join( t[i], NULL );
+		}
+	}
+	return 0;
 }
