the prototype of pthread_create is
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
As the arg parameter is a void* you can simply write
However, it the function_call(), you will need to cast you arg parameter to the real type.
tmp_G = arg;
// then I use tmp_G as G
Then you will be able to use you parameter as you need.
If you want to give more then one parameter to you function, you simply have to create a new structure that will contain all your parameters, then cast it as above to use them in your function_call().
here is an example :
typedef struct s_my_function_call_arg