tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

short_thread.c (1497B)


      1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 #include <stdio.h>
      7 #include "nspr.h"
      8 #include "plgetopt.h"
      9 
     10 /*
     11 * Create a thread that exits right away; useful for testing race conditions in
     12 * thread creation
     13 */
     14 
     15 int _debug_on = 0;
     16 #define DPRINTF(arg) \
     17  if (_debug_on) printf arg
     18 
     19 static void housecleaning(void* cur_time);
     20 
     21 int main(int argc, char** argv) {
     22  static PRIntervalTime thread_start_time;
     23  static PRThread* housekeeping_tid = NULL;
     24  PLOptStatus os;
     25  PLOptState* opt = PL_CreateOptState(argc, argv, "d");
     26 
     27  while (PL_OPT_EOL != (os = PL_GetNextOpt(opt))) {
     28    if (PL_OPT_BAD == os) {
     29      continue;
     30    }
     31    switch (opt->option) {
     32      case 'd': /* debug mode */
     33        _debug_on = 1;
     34        break;
     35      default:
     36        break;
     37    }
     38  }
     39  PL_DestroyOptState(opt);
     40 
     41  if ((housekeeping_tid = PR_CreateThread(
     42           PR_USER_THREAD, housecleaning, (void*)&thread_start_time,
     43           PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD, PR_UNJOINABLE_THREAD, 0)) ==
     44      NULL) {
     45    fprintf(stderr, "simple_test: Error - PR_CreateThread failed: (%ld, %ld)\n",
     46            PR_GetError(), PR_GetOSError());
     47    exit(1);
     48  }
     49  PR_Cleanup();
     50  return (0);
     51 }
     52 
     53 static void housecleaning(void* cur_time) {
     54  DPRINTF(("Child Thread exiting\n"));
     55 }