IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 12, 2007, 4:26:31 PM (20 years ago)
Author:
eugene
Message:

added module system; added panstarrs user features; panstarrs threaded

Location:
trunk/Ohana/src/opihi/pantasks
Files:
5 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pantasks/Makefile

    r11054 r11084  
    77LIB     =       $(HOME)/lib
    88INC     =       $(HOME)/include
    9 HELP    =       $(DESTHELP)/pantasks
     9DATA    =       $(DESTDATA)/pantasks
    1010
    1111# link flags
     
    1616# sched user commands and support functions ########################
    1717
     18client = \
     19$(SRC)/pantasks_client.$(ARCH).o \
     20$(SRC)/client_shell.$(ARCH).o \
     21$(SRC)/invalid.$(ARCH).o \
     22$(SRC)/init_client.$(ARCH).o
     23
    1824single = \
    1925$(SRC)/init.$(ARCH).o \
     
    2127$(SRC)/stop.$(ARCH).o \
    2228$(SRC)/pantasks.$(ARCH).o \
    23 $(SRC)/CheckSystem.$(ARCH).o
     29$(SRC)/thread_locks.$(ARCH).o \
     30$(SRC)/job_threads.$(ARCH).o \
     31$(SRC)/task_threads.$(ARCH).o \
     32$(SRC)/controller_threads.$(ARCH).o
     33
     34server = \
     35$(SRC)/pantasks_server.$(ARCH).o \
     36$(SRC)/server_run.$(ARCH).o \
     37$(SRC)/server_load.$(ARCH).o \
     38$(SRC)/InputQueue.$(ARCH).o \
     39$(SRC)/ListenClients.$(ARCH).o \
     40$(SRC)/server.$(ARCH).o \
     41$(SRC)/status_server.$(ARCH).o \
     42$(SRC)/init_server.$(ARCH).o \
     43$(SRC)/CheckPassword.$(ARCH).o \
     44$(SRC)/thread_locks.$(ARCH).o \
     45$(SRC)/job_threads.$(ARCH).o \
     46$(SRC)/task_threads.$(ARCH).o \
     47$(SRC)/controller_threads.$(ARCH).o \
     48$(SRC)/input_threads.$(ARCH).o
    2449
    2550funcs = \
     
    6186$(SRC)/ipptool2book.$(ARCH).o
    6287
    63 client = \
    64 $(SRC)/pantasks_client.$(ARCH).o \
    65 $(SRC)/client_shell.$(ARCH).o \
    66 $(SRC)/invalid.$(ARCH).o \
    67 $(SRC)/init_client.$(ARCH).o
    68 
    69 server = \
    70 $(SRC)/pantasks_server.$(ARCH).o \
    71 $(SRC)/server_threads.$(ARCH).o \
    72 $(SRC)/server_run.$(ARCH).o \
    73 $(SRC)/server_load.$(ARCH).o \
    74 $(SRC)/InputQueue.$(ARCH).o \
    75 $(SRC)/ListenClients.$(ARCH).o \
    76 $(SRC)/server.$(ARCH).o \
    77 $(SRC)/status_server.$(ARCH).o \
    78 $(SRC)/init_server.$(ARCH).o \
    79 $(SRC)/CheckPassword.$(ARCH).o
    80 
    8188libs = \
    8289$(DESTLIB)/libshell.a \
     
    103110$(single) $(client) $(server) $(funcs) $(cmds) : $(INC)/pantasks.h
    104111
    105 install: $(DESTBIN)/pantasks $(DESTBIN)/pantasks_client $(DESTBIN)/pantasks_server help
     112install: $(DESTBIN)/pantasks $(DESTBIN)/pantasks_client $(DESTBIN)/pantasks_server help modules
    106113
    107114help: clean-help cmd.basic.help cmd.data.help cmd.astro.help pantasks.help
     115
     116modules: pantasks.modules
    108117
    109118.PHONY: pantasks pantasks_client pantasks_server
  • trunk/Ohana/src/opihi/pantasks/TaskOps.c

    r11055 r11084  
    11# include "pantasks.h"
     2# include <regex.h>
    23
    34static Task **tasks;
     
    7576  gprint (GP_LOG, " Task Status\n");
    7677
    77   snprintf (format, 128, "  AV %%-%ds %5s %%-%ds\n", nameLength, "Njobs", cmdLength);
     78  snprintf (format, 128, "  AV %%-%ds %5s  %5s %5s %5s %%-%ds\n", nameLength, "Njobs", "Ngood", "Nfail", "Ntime", cmdLength);
    7879  gprint (GP_LOG, format, "Name", "Command");
    7980
    80   snprintf (format, 128, "%%-%ds %%5d %%-%ds\n", nameLength, cmdLength);
     81  snprintf (format, 128, "%%-%ds %%5d  %%5d %%5d %%5d %%-%ds\n", nameLength, cmdLength);
    8182  for (i = 0; i < Ntasks; i++) {
    8283    valid = CheckTimeRanges (tasks[i][0].ranges, tasks[i][0].Nranges);
     
    9394    }
    9495    if (tasks[i][0].argv == NULL) {
    95       gprint (GP_LOG, format, tasks[i][0].name, tasks[i][0].Njobs, "(dynamic)");
    96     } else {
    97       gprint (GP_LOG, format, tasks[i][0].name, tasks[i][0].Njobs, tasks[i][0].argv[0]);
     96      gprint (GP_LOG, format, tasks[i][0].name, tasks[i][0].Njobs, tasks[i][0].Nsuccess, tasks[i][0].Nfailure, tasks[i][0].Ntimeout, "(dynamic)");
     97    } else {
     98      gprint (GP_LOG, format, tasks[i][0].name, tasks[i][0].Njobs, tasks[i][0].Nsuccess, tasks[i][0].Nfailure, tasks[i][0].Ntimeout, tasks[i][0].argv[0]);
    9899    }
    99100    if (verbose) {
     
    146147
    147148/* list known tasks */
    148 void ListTaskStats () {
     149void ListTaskStats (char *regex) {
    149150
    150151  int i, j, valid, nameLength;
    151152  char *start, *stop;
    152153  char format[128];
     154  regex_t preg;
    153155
    154156  gprint (GP_LOG, "\n");
     
    158160  }
    159161
     162  if (regex != NULL) {
     163    regcomp (&preg, regex, REG_EXTENDED);
     164  }
     165
    160166  /* find string lengths */
    161167  nameLength = 0;
     
    173179  snprintf (format, 128, "%%-%ds", nameLength);
    174180  for (i = 0; i < Ntasks; i++) {
     181     
     182    if ((regex != NULL) && regexec (&preg, tasks[i][0].name, 0, NULL, 0)) continue;
     183
    175184    valid = CheckTimeRanges (tasks[i][0].ranges, tasks[i][0].Nranges);
    176185    if (tasks[i][0].active) {
  • trunk/Ohana/src/opihi/pantasks/init.c

    r10997 r11084  
    1515int run             PROTO((int, char **));
    1616int stop            PROTO((int, char **));
     17int halt            PROTO((int, char **));
    1718int pulse           PROTO((int, char **));
    1819int status_sys      PROTO((int, char **));
     
    3839  {"stderr",     task_stderr,  "define a file for the job stderr dump"},
    3940  {"run",        run,          "run the scheduler"},
    40   {"stop",       stop,         "stop the scheduler"},
     41  {"stop",       stop,         "stop the scheduler (continue job harvesting)"},
     42  {"halt",       halt,         "halt the scheduler (no job harvesting)"},
    4143  {"pulse",      pulse,        "set the scheduler update period"},
    4244  {"status",     status_sys,   "get system status"},
  • trunk/Ohana/src/opihi/pantasks/ipptool2book.c

    r11055 r11084  
    8080  }
    8181  if (strcmp(bookName, argv[2])) {
    82     gprint (GP_ERR, "WARNING: metadata output name does not match expected bookname\n");
     82    gprint (GP_ERR, "WARNING: metadata output name %s does not match expected bookname %s\n", bookName, argv[2]);
    8383  }
    8484  free (line);
  • trunk/Ohana/src/opihi/pantasks/pantasks.c

    r9473 r11084  
    1010void program_init (int *argc, char **argv) {
    1111 
     12  pthread_t jobsThread;
     13  pthread_t tasksThread;
     14  pthread_t controllerThread;
     15
    1216  auto_break = TRUE;
    1317
     
    2630  set_str_variable ("RCFILE", opihi_rcfile);
    2731
    28 # ifdef HELPDIR_DEFAULT
    29   set_str_variable ("HELPDIR", MACRO_NAME(HELPDIR_DEFAULT));
     32# ifdef DATADIR_DEFAULT
     33  {
     34    char *datadir;
     35    char *helpdir;
     36    char *modules;
     37    datadir = MACRO_NAME(DATADIR_DEFAULT);
     38    /* set_str_variable ("DATADIR", datadir); */
     39    ALLOCATE (helpdir, char, strlen(datadir) + strlen("/help") + 2);
     40    sprintf (helpdir, "%s/help", datadir);
     41    set_str_variable ("HELPDIR", helpdir);
     42    free (helpdir);
     43    ALLOCATE (modules, char, strlen(datadir) + strlen("/modules") + 2);
     44    sprintf (modules, "%s/modules", datadir);
     45    set_str_variable ("MODULES:0", modules);
     46    set_int_variable ("MODULES:n", 1);
     47    free (helpdir);
     48  }
    3049# endif
    3150
     
    3352  signal (SIGTSTP, gotsignal);
    3453  signal (SIGTTIN, gotsignal);
     54
     55  /* start up the background threads here */
     56  pthread_create (&tasksThread,      NULL, &CheckTasksThread,      NULL);
     57  pthread_create (&jobsThread,       NULL, &CheckJobsThread,       NULL);
     58  pthread_create (&controllerThread, NULL, &CheckControllerThread, NULL);
    3559  return;
    3660}
     
    6185  exit (status);
    6286}
     87
     88/* pantasks runs three (or four) threads:
     89   - one thread parses commands from the connected clients
     90   - one thread runs the scheduler loop
     91   - one thread may run the controller loop independently
     92   - the main thread runs readline and accepts user input
     93*/
  • trunk/Ohana/src/opihi/pantasks/pantasks_client.c

    r9473 r11084  
    2525  set_str_variable ("RCFILE", opihi_rcfile);
    2626
    27 # ifdef HELPDIR_DEFAULT
    28   set_str_variable ("HELPDIR", MACRO_NAME(HELPDIR_DEFAULT));
     27# ifdef DATADIR_DEFAULT
     28  {
     29      char *datadir;
     30      char *helpdir;
     31      char *modules;
     32      datadir = MACRO_NAME(DATADIR_DEFAULT);
     33      /* set_str_variable ("DATADIR", datadir); */
     34      ALLOCATE (helpdir, char, strlen(datadir) + strlen("/help") + 2);
     35      sprintf (helpdir, "%s/help", datadir);
     36      set_str_variable ("HELPDIR", helpdir);
     37      free (helpdir);
     38      ALLOCATE (modules, char, strlen(datadir) + strlen("/modules") + 2);
     39      sprintf (modules, "%s/modules", datadir);
     40      set_str_variable ("MODULES:0", modules);
     41      set_int_variable ("MODULES:n", 1);
     42      free (helpdir);
     43  }
    2944# endif
    3045
  • trunk/Ohana/src/opihi/pantasks/pantasks_server.c

    r9473 r11084  
    1616int main (int argc, char **argv) {
    1717 
     18  pthread_t jobsThread;
     19  pthread_t tasksThread;
     20  pthread_t inputsThread;
    1821  pthread_t clientsThread;
    19   pthread_t tasksThread;
    20   // pthread_t jobsThread;
    21   pthread_t inputsThread;
    2222  pthread_t controllerThread;
    2323  int InitSocket, BindSocket;
     
    4747  pthread_create (&clientsThread,    NULL, &ListenClients,         NULL);
    4848  pthread_create (&tasksThread,      NULL, &CheckTasksThread,      NULL);
    49   // pthread_create (&jobsThread,       NULL, &CheckJobsThread,            NULL);
     49  pthread_create (&jobsThread,       NULL, &CheckJobsThread,       NULL);
    5050  pthread_create (&controllerThread, NULL, &CheckControllerThread, NULL);
    5151  pthread_create (&inputsThread,     NULL, &CheckInputsThread,     NULL);
  • trunk/Ohana/src/opihi/pantasks/run.c

    r7929 r11084  
    1515  }
    1616
    17   InitTaskTimers ();
    18   rl_event_hook = CheckSystem;
     17  CheckTasksSetState (TRUE);
     18  CheckControllerSetState (TRUE);
     19  CheckJobsSetState (TRUE);
     20
     21  // InitTaskTimers ();
     22  // rl_event_hook = CheckSystem;
    1923
    2024  return (TRUE);
  • trunk/Ohana/src/opihi/pantasks/server.c

    r8548 r11084  
    77int server_run      PROTO((int, char **));
    88int server_stop     PROTO((int, char **));
     9int server_halt     PROTO((int, char **));
    910int cd              PROTO((int, char **));
    1011int pwd             PROTO((int, char **));
     
    2021  {"run",    server_run,  "run scheduler"},
    2122  {"stop",   server_stop, "stop scheduler"},
     23  {"halt",   server_halt, "halt scheduler"},
    2224  {"cd",     cd,     "set local directory"},
    2325  {"pwd",    pwd,    "check local directory"},
  • trunk/Ohana/src/opihi/pantasks/server_run.c

    r8548 r11084  
    99
    1010  CheckTasksSetState (TRUE);
    11   // CheckJobsSetState (TRUE);
     11  CheckJobsSetState (TRUE);
    1212  CheckControllerSetState (TRUE);
    1313  CheckInputsSetState (TRUE);
     
    2424  CheckTasksSetState (FALSE);
    2525  // CheckJobsSetState (FALSE);
     26  // CheckControllerSetState (FALSE);
     27  CheckInputsSetState (FALSE);
     28  return (TRUE);
     29}
     30
     31int server_halt (int argc, char **argv) {
     32
     33  if (argc != 1) {
     34    gprint (GP_ERR, "USAGE: server halt\n");
     35    return (FALSE);
     36  }
     37
     38  CheckTasksSetState (FALSE);
     39  CheckJobsSetState (FALSE);
    2640  CheckControllerSetState (FALSE);
    2741  CheckInputsSetState (FALSE);
  • trunk/Ohana/src/opihi/pantasks/status.c

    r7960 r11084  
    44
    55  gprint (GP_LOG, "\n");
    6   if (rl_event_hook == NULL) {
    7     gprint (GP_LOG, " Scheduler is stopped\n");
     6
     7  // if (rl_event_hook == NULL) {
     8
     9  if (CheckTasksGetState()) {
     10    gprint (GP_LOG, " Scheduler is running\n");
    811  } else {
    9     gprint (GP_LOG, " Scheduler is running\n");
     12    if (CheckJobsGetState()) {
     13      gprint (GP_LOG, " Scheduler is stopped, harvesting jobs\n");
     14    } else {
     15      gprint (GP_LOG, " Scheduler is running\n");
     16    }
    1017  }
    1118  if (CheckControllerStatus()) {
  • trunk/Ohana/src/opihi/pantasks/stop.c

    r7917 r11084  
    88  }
    99
    10   rl_event_hook = NULL;
     10  CheckTasksSetState (FALSE);
     11  // CheckControllerSetState (FALSE);
     12  // CheckJobsSetState (FALSE);
    1113
    1214  return (TRUE);
    1315}
     16
     17int halt (int argc, char **argv) {
     18
     19  if (argc != 1) {
     20    gprint (GP_ERR, "USAGE: halt\n");
     21    return (FALSE);
     22  }
     23
     24  CheckTasksSetState (FALSE);
     25  CheckControllerSetState (FALSE);
     26  CheckJobsSetState (FALSE);
     27
     28  return (TRUE);
     29}
  • trunk/Ohana/src/opihi/pantasks/task.c

    r11055 r11084  
    2323  if ((N = get_argument (argc, argv, "-stats"))) {
    2424    remove_argument (N, &argc, argv);
    25     ListTaskStats ();
     25    if (argc == 2) {
     26      ListTaskStats (argv[N]);
     27    } else {
     28      ListTaskStats (NULL);
     29    }     
    2630    return (TRUE);
    2731  }
Note: See TracChangeset for help on using the changeset viewer.