/*************************************** * hv_init.c * * * ***************************************/ #include #include #include #include #include #include "../lib/mylib1.h" #include "a200.h" #include "../dbase/hv_dbase.h" extern int os9forkc(); extern char **environ; char *argblk[5]; int hra[6]; FILE *fp, *fopen(); unsigned long pid; char parm[20]; main(argc,argv) int argc; char **argv; { SY127_MBOX *mod127; SY227_MBOX *mod227; PROCS_INFO *hv_procs_mod; int ev127_id, ev227_id, evpro_id; int i, iev, tcycle, sy127_crate; /* create semaphores */ evpro_id = sem_link_cr("hv_pr_info", argv[0]); ev127_id = sem_link_cr("sy127mod", argv[0]); ev227_id = sem_link_cr("sy227mod", argv[0]); /* create module for sy127 informations */ if((mod127 = ( SY127_MBOX *)modlink("sy127mod", 0)) == (SY127_MBOX *)-1){ data_ora(&hra[0], &hra[1], &hra[2], &hra[3], &hra[4], &hra[5]); sem_wait(ev127_id, argv[0]); if((mod127 = (SY127_MBOX *)_mkdata_module("sy127mod", sizeof(SY127_MBOX), 0x8001, 0x0033)) == (SY127_MBOX *)-1) /* see module.h for attr,perm */ exit(_errmsg(errno,"mod127: err. link/create data module\n")); for(i=0; i<6; i++) mod127->creat_tim[i] = hra[i]; mod127->nchk = 0; mod127->nchk_err = 0; mod127->nvim = 0; mod127->nvim_err = 0; mod127->nsta = 0; mod127->nsta_err = 0; sem_free(ev127_id, argv[0]); } /* create module for sy227 informations */ if((mod227 = ( SY227_MBOX *)modlink("sy227mod", 0)) == (SY227_MBOX *)-1){ data_ora(&hra[0], &hra[1], &hra[2], &hra[3], &hra[4], &hra[5]); sem_wait(ev227_id, argv[0]); if((mod227 = (SY227_MBOX *)_mkdata_module("sy227mod", sizeof(SY227_MBOX), 0x8001, 0x0033)) == (SY227_MBOX *)-1) /* see module.h for attr,perm */ exit(_errmsg(errno,"mod227: err. link/create data module\n")); for(i=0; i<6; i++) mod227->creat_tim[i] = hra[i]; mod227->nchk = 0; mod227->nchk_err = 0; mod227->nvim = 0; mod227->nvim_err = 0; mod227->nsta = 0; mod227->nsta_err = 0; sem_free(ev227_id, argv[0]); } /* create module for processes informations ( needed by hv_procs_stop for example ) */ if((hv_procs_mod = (PROCS_INFO *)modlink("hv_pr_info", 0)) == (PROCS_INFO *)-1){ data_ora(&hra[0], &hra[1], &hra[2], &hra[3], &hra[4], &hra[5]); sem_wait(evpro_id, argv[0]); if((hv_procs_mod = (PROCS_INFO *)_mkdata_module("hv_pr_info", sizeof(PROCS_INFO), 0x8001, 0x0033)) == (PROCS_INFO *) -1) /* see module.h for attr,perm */ exit(_errmsg(errno,"hv_procs_mod: err. link/create data module\n")); for(i=0; i<6; i++) hv_procs_mod->creat_date[i] = hra[i]; hv_procs_mod->sy127_vi_mon_id = 0; hv_procs_mod->sy127_st_mon_id = 0; hv_procs_mod->sy127_par_mon_id = 0; hv_procs_mod->sy227_vi_mon_id = 0; hv_procs_mod->sy227_st_mon_id = 0; hv_procs_mod->sy227_par_mon_id = 0; hv_procs_mod->sy127_vi_send_id = 0; hv_procs_mod->a200_resetter_id = 0; hv_procs_mod->sy127_vi_mon_active = 1; /* value set to 0 when the */ hv_procs_mod->sy127_st_mon_active = 1; /* process puts itself to */ hv_procs_mod->sy127_par_mon_active = 1; /* sleep */ hv_procs_mod->sy227_vi_mon_active = 1; hv_procs_mod->sy227_st_mon_active = 1; hv_procs_mod->sy227_par_mon_active = 1; hv_procs_mod->sy127_vi_send_active = 1; hv_procs_mod->a200_resetter_active = 1; hv_procs_mod->sy127_vi_mon_com = 0; /* a value != 0 is a */ hv_procs_mod->sy127_st_mon_com = 0; /* command to the process */ hv_procs_mod->sy127_par_mon_com = 0; /* ( initially used to PAUSE */ hv_procs_mod->sy227_vi_mon_com = 0; /* and STOP ) */ hv_procs_mod->sy227_st_mon_com = 0; hv_procs_mod->sy127_vi_send_com = 0; hv_procs_mod->a200_resetter_com = 0; sem_free(evpro_id, argv[0]); } /* unlink modules of sy127 , of sy227 and module of process info's */ sem_unl(ev127_id, argv[0]); sem_unl(ev227_id, argv[0]); sem_unl(evpro_id, argv[0]); }