>> (void *) &secs
You can't pass a pointer to stack variable. start_stopwatch() could return before the thread starts. You can use the pointer value itself to pass integral values - (void*)secs. But don't you want to also pass the callback function to the thread as well?

Using a single thread for a single timed callback is a bit overkill and doesn't scale well. But it's good for fun

gg