X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=direct%2Ftest-framework%2Fstress_tests%2Fthreading%2Fthreading.c;fp=direct%2Ftest-framework%2Fstress_tests%2Fthreading%2Fthreading.c;h=89862722210f069c12e6a97198695080e7e9b495;hb=a51c8b53c1d11f7c4690243c9685a9b337f51127;hp=0000000000000000000000000000000000000000;hpb=566822213e306533d20b3ca38fcadd0d3d8a633f;p=yaffs2.git diff --git a/direct/test-framework/stress_tests/threading/threading.c b/direct/test-framework/stress_tests/threading/threading.c new file mode 100644 index 0000000..8986272 --- /dev/null +++ b/direct/test-framework/stress_tests/threading/threading.c @@ -0,0 +1,79 @@ +/* + * YAFFS: Yet another FFS. A NAND-flash specific file system. + * + * Copyright (C) 2002-2018 Aleph One Ltd. + * + * Created by Timothy Manning + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "threading.h" +int random_seed; +int simulate_power_failure = 0; + +const struct option long_options[]={ + {"help", 0,NULL,'h'}, + {"threads", 1,NULL,'t'} +}; + +const char short_options[]="ht:"; + + + + +void main_init(int argc, char *argv[]) +{ + int new_option; + int x=0; + int new_num_of_threads=5; + x=(unsigned)time(NULL); + printf("seeding srand with: %d\n",x); + srand(x); + do{ + new_option=getopt_long(argc,argv,short_options,long_options,NULL); + if (new_option=='h'){ + printf("help\n"); + printf("-h will print the commands available\n"); + printf("-t [number] sets the number of threads\n"); + exit(0); + } else if (new_option=='t') { + new_num_of_threads=atoi(optarg); + } + }while (new_option!=-1); + number_of_threads(new_num_of_threads); + init_counter(new_num_of_threads); + +} + +int main(int argc, char *argv[]) +{ + main_init(argc,argv); + pthread_t threads[get_num_of_threads()]; + unsigned int x=0; + int output=0; + int y=0; + + for (x=0;x0){ + printf("failed to create thread %d. Error is %d\n",x,output); + } + + } + while (1){ + y=0; + printf("thread counter: %d ",get_counter(y)); + for (y=1;y