示例#1
0
int ns_write_chksum_flush(NetStream_t *ns)
{
    char chksum_value[CHKSUM_MAX_SIZE];
    int err, n;
    tbuffer_t buf;

    log_printf(15, "ns_write_chksum_flush: injecting chksum!  ns=%d type=%d bytesleft=" I64T " bsize=" I64T "\n",
               ns_getid(ns), chksum_type(&(ns->write_chksum.chksum)), ns->write_chksum.bytesleft, ns->write_chksum.blocksize);
    flush_log();

    if (ns_write_chksum_state(ns) == 0) return(0);
    if (ns->write_chksum.bytesleft == ns->write_chksum.blocksize) return(0);  //** Nothing to do

    n = chksum_size(&(ns->write_chksum.chksum), CHKSUM_DIGEST_HEX);
    chksum_get(&(ns->write_chksum.chksum), CHKSUM_DIGEST_HEX, chksum_value);

    ns->write_chksum.is_running = 0;  //** Don't want to get in an endless loop
    tbuffer_single(&buf, n, chksum_value);
    err = _write_netstream_block(ns, apr_time_now() + apr_time_make(5,0), &buf, 0, n, 0);
    ns->write_chksum.is_running = 1;

    if (err != 0) {
        log_printf(10, "ns_write_chksum_flush: ns=%d Error writing chksum! error=%d\n", ns_getid(ns), err);
        return(err);
    }

    chksum_value[n] = '\0';
    log_printf(15, "ns_write_chksum_flush: ns=%d chksum_value=%s\n", ns_getid(ns), chksum_value);
    log_printf(15, "ns_write_chksum_flush: end of routine!  ns=%d\n err=%d", ns_getid(ns), err);
    flush_log();

    return(err);
}
示例#2
0
void close_server_port(ns_monitor_t *nm)
{
    apr_status_t dummy;

    //** Trigger a port shutdown
    apr_thread_mutex_lock(nm->lock);
    nm->shutdown_request = 1;
    log_printf(15, "close_server_port: port=%d Before cond_signal\n", nm->port);
    flush_log();
    apr_thread_cond_signal(nm->cond);
    log_printf(15, "close_server_port: port=%d After cond_signal\n", nm->port);
    flush_log();
    apr_thread_mutex_unlock(nm->lock);

    log_printf(15, "close_server_port: port=%d After unlock\n", nm->port);
    flush_log();

    //** Wait until the thread closes
    apr_thread_join(&dummy, nm->thread);

    log_printf(15, "close_server_port: port=%d After join\n", nm->port);
    flush_log();

    //** Free the actual struct
    free(nm->address);
    apr_thread_mutex_destroy(nm->lock);
    apr_thread_cond_destroy(nm->cond);

    apr_pool_destroy(nm->mpool);

    nm->port = -1;
}
示例#3
0
void lock_tc(ibp_task_t *task)
{
  log_printf(15, "lock_tc: Locking....ns=%d\n", task->ns->id); flush_log();
  pthread_mutex_lock(&(task->tc->lock));
  log_printf(15, "lock_tc: ....got it ns=%d\n", task->ns->id); flush_log();

}
示例#4
0
op_generic_t *gop_waitany(op_generic_t *g)
{
    op_generic_t *gop = g;
    callback_t *cb;

    lock_gop(g);

    if (gop_get_type(g) == Q_TYPE_QUE) {
        log_printf(15, "sync_exec_que_check gid=%d stack_size=%d started_exec=%d\n", gop_id(g), stack_size(g->q->opque->qd.list), g->base.started_execution);
        if ((stack_size(g->q->opque->qd.list) == 1) && (g->base.started_execution == 0)) {  //** See if we can directly exec
            g->base.started_execution = 1;
            cb = (callback_t *)pop(g->q->opque->qd.list);
            gop = (op_generic_t *)cb->priv;
            log_printf(15, "sync_exec_que -- waiting for pgid=%d cgid=%d to complete\n", gop_id(g), gop_id(gop));
            unlock_gop(g);
            gop_waitany(gop);
            pop(g->q->finished); //** Remove it from the finished list.
            return(gop);
        } else {
            _gop_start_execution(g);  //** Make sure things have been submitted
            while (((gop = (op_generic_t *)pop(g->q->finished)) == NULL) && (g->q->nleft > 0)) {
                apr_thread_cond_wait(g->base.ctl->cond, g->base.ctl->lock); //** Sleep until something completes
            }
        }

        if (gop != NULL) log_printf(15, "POP finished qid=%d gid=%d\n", gop_id(g), gop_id(gop));
//log_printf(15, "Printing qid=%d finished stack\n", gop_id(g));
//_opque_print_stack(g->q->finished);
    } else {
        log_printf(15, "gop_waitany: BEFORE (type=op) While gid=%d state=%d\n", gop_id(g), g->base.state);
        flush_log();
        if ((g->base.pc->fn->sync_exec != NULL) && (g->base.started_execution == 0)) {  //** See if we can directly exec
            unlock_gop(g);  //** Don't need this for a direct exec
            log_printf(15, "sync_exec -- waiting for gid=%d to complete\n", gop_id(g));
            g->base.pc->fn->sync_exec(g->base.pc, g);
            log_printf(15, "sync_exec -- gid=%d completed with err=%d\n", gop_id(g), g->base.state);
            return(g);
        } else {  //** Got to submit it normally
            unlock_gop(g);  //** It's a single task so no need to hold the lock.  Otherwise we can deadlock
            _gop_start_execution(g);  //** Make sure things have been submitted
            lock_gop(g);  //** but we do need it for detecting when we're finished.
            while (g->base.state == 0) {
                apr_thread_cond_wait(g->base.ctl->cond, g->base.ctl->lock); //** Sleep until something completes
            }
        }
        log_printf(15, "gop_waitany: AFTER (type=op) While gid=%d state=%d\n", gop_id(g), g->base.state);
        flush_log();
    }
    unlock_gop(g);

    return(gop);
}
示例#5
0
int ns_read_chksum_flush(NetStream_t *ns)
{
    char ns_value[CHKSUM_MAX_SIZE], chksum_value[CHKSUM_MAX_SIZE];
    int err, n;
    tbuffer_t buf;

    log_printf(15, "ns_read_chksum_flush: Reading chksum!  ns=%d type=%d bleft=" I64T " bsize=" I64T " state=%d\n",
               ns_getid(ns), chksum_type(&(ns->read_chksum.chksum)), ns->read_chksum.bytesleft, ns->read_chksum.blocksize, ns_read_chksum_state(ns));
    flush_log();

    if (ns_read_chksum_state(ns) == 0) return(0);
    if (ns->read_chksum.bytesleft == ns->read_chksum.blocksize) return(0);  //** Nothing to do

    n = chksum_size(&(ns->read_chksum.chksum), CHKSUM_DIGEST_HEX);


    ns->read_chksum.is_running = 0;  //** Don't want to get in an endless loop
    tbuffer_single(&buf, n, ns_value);
    err = _read_netstream_block(ns, apr_time_now() + apr_time_make(5,0), &buf, 0, n, 0);
    ns_value[n] = '\0';
    ns->read_chksum.is_running = 1;

    log_printf(15, "ns_read_chksum_flush: Finished reading chksum!  ns=%d\n", ns_getid(ns));
    flush_log();

    if (err != 0) {
        log_printf(10, "ns_read_chksum_flush: ns=%d Error reading chksum! error=%d\n", ns_getid(ns), err);
        return(err);
    }

    chksum_get(&(ns->read_chksum.chksum), CHKSUM_DIGEST_HEX, chksum_value);
    log_printf(15, "ns_read_chksum_flush: after chksum_get!  ns=%d\n", ns_getid(ns));
    flush_log();
    err = (strncmp(chksum_value, ns_value, n) == 0) ? 0 : 1;

    log_printf(15, "ns_read_chksum_flush: ns=%d     ns_value=%s  cmp=%d\n", ns_getid(ns), ns_value, err);
    log_printf(15, "ns_read_chksum_flush: ns=%d chksum_value=%s\n", ns_getid(ns), chksum_value);
    if (err != 0) {
        log_printf(1, "ns_read_chksum_flush: ns=%d chksum error!\n", ns_getid(ns));
        log_printf(1, "ns_read_chksum_flush: ns=%d     ns_value=%s  cmp=%d\n", ns_getid(ns), ns_value, err);
        log_printf(1, "ns_read_chksum_flush: ns=%d chksum_value=%s\n", ns_getid(ns), chksum_value);
    }

    log_printf(15, "ns_read_chksum_flush: end of routine!  ns=%d\n err=%d", ns_getid(ns), err);
    flush_log();

    return(err);
}
static apr_status_t flush_all_logs(void *data)
{
    server_rec *s = data;
    multi_log_state *mls;
    apr_array_header_t *log_list;
    config_log_state *clsarray;
    buffered_log *buf;
    int i;

    if (!buffered_logs)
        return APR_SUCCESS;

    for (; s; s = s->next) {
        mls = ap_get_module_config(s->module_config, &log_config_module);
        log_list = NULL;
        if (mls->config_logs->nelts) {
            log_list = mls->config_logs;
        }
        else if (mls->server_config_logs) {
            log_list = mls->server_config_logs;
        }
        if (log_list) {
            clsarray = (config_log_state *) log_list->elts;
            for (i = 0; i < log_list->nelts; ++i) {
                buf = clsarray[i].log_writer;
                flush_log(buf);
            }
        }
    }
    return APR_SUCCESS;
}
示例#7
0
/*
 * Test the target system's sleep routine to decide whether we should busy wait
 * by default for sleeps shorter in duration than SLEEP_BUSY_THRESHOLD
 */
void sleep_test (void)
{
    int result;

    currprefs.dont_busy_wait = 1;

#ifndef SLEEP_DONT_BUSY_WAIT

    if (rpt_available) {
	uae_u64 total = 0;
	int result;
	int num_tests;
	int i;

	write_log ("Testing system sleep function"); flush_log ();

	/* Do a few tests to get a rough idea how fast we can do it */
	num_tests = 16;

	for (i=0; i < num_tests; i++)
	    total += do_sleep_test (1);

	/* How many for 2 seconds worth of tests . . . */
	num_tests = 2 * syncbase * num_tests / total;
	total = 0;

	/* Now the test proper */
	for (i = 0; i < num_tests; i++) {
	    total += do_sleep_test (1);

	    if (i - (i % 100) == i) {
		write_log (".");
		flush_log ();
	    }
	}

	result = (1000 * total / syncbase) / num_tests;
	write_log ("\nAverage duration of a 1ms sleep: %d ms\n", result);

	if (result > SLEEP_BUSY_THRESHOLD) {
	    currprefs.dont_busy_wait = 0;
	    write_log ("Enabling busy-waiting for sub-%dms sleeps\n", SLEEP_BUSY_THRESHOLD);
	}
    }

#endif
}
示例#8
0
CScriptEngine::~CScriptEngine			()
{
	while (!m_script_processes.empty())
		remove_script_process(m_script_processes.begin()->first);
	flush_log				();
#ifdef USE_DEBUGGER
	xr_delete (m_scriptDebugger);
#endif
}
示例#9
0
inline void update_log_cnt()
{
    log_cnt++;
    if (log_cnt == MAX_LOG_CNT)
    {
        printk("CUBIC: ram log buffer overflow\n");
        flush_log();
    }
}
示例#10
0
void write_log (const TCHAR *format, ...)
{
    int count;
    TCHAR buffer[WRITE_LOG_BUF_SIZE], *ts;
    int bufsize = WRITE_LOG_BUF_SIZE;
    TCHAR *bufp;
    va_list parms;

    if (!cs_init)
        return;

    premsg ();

    if (!_tcsicmp (format, _T("*")))
        count = 0;

    EnterCriticalSection (&cs);
    va_start (parms, format);
    bufp = buffer;
    for (;;) {
        count = _vsntprintf (bufp, bufsize - 1, format, parms);
        if (count < 0) {
            bufsize *= 10;
            if (bufp != buffer)
                xfree (bufp);
            bufp = xmalloc (TCHAR, bufsize);
            continue;
        }
        break;
    }
    bufp[bufsize - 1] = 0;
    if (!_tcsncmp (bufp, _T("write "), 6))
        bufsize--;
    ts = writets ();
    if (bufp[0] == '*')
        count++;
    if (SHOW_CONSOLE || console_logging) {
        if (lfdetected && ts)
            writeconsole (ts);
        writeconsole (bufp);
    }
    if (debugfile) {
        if (lfdetected && ts)
            _ftprintf (debugfile, _T("%s"), ts);
        _ftprintf (debugfile, _T("%s"), bufp);
    }
    lfdetected = 0;
    if (_tcslen (bufp) > 0 && bufp[_tcslen (bufp) - 1] == '\n')
        lfdetected = 1;
    va_end (parms);
    if (bufp != buffer)
        xfree (bufp);
    if (always_flush_log)
        flush_log ();
    LeaveCriticalSection (&cs);
}
示例#11
0
CScriptEngine::~CScriptEngine()
{
    while (!m_script_processes.empty())
        remove_script_process(m_script_processes.begin()->first);

#ifdef DEBUG
    flush_log();
#else
#   ifdef LUA_DEBUG_PRINT
    flush_log();
#   endif //-LUA_DEBUG_PRINT
#endif //-DEBUG

#ifdef USE_DEBUGGER
#	ifndef USE_LUA_STUDIO
    xr_delete				(m_scriptDebugger);
#	else // #ifndef USE_LUA_STUDIO
    disconnect_from_debugger();
#	endif // #ifndef USE_LUA_STUDIO
#endif
}
示例#12
0
int compare_buffers_print(char *b1, char *b2, int len, ex_off_t offset)
{
    int i, k, mode, last, ok, err, last_byte;
    ex_off_t start, end;

    err = 0;
    mode = (b1[0] == b2[0]) ? 0 : 1;
    start = offset;
    last = len - 1;

    log_printf(0, "Printing comparision breakdown -- Single byte matches are suppressed (len=%d)\n", len);
    b1[len] = 0;
    b2[len]=0;
    log_printf(15, "b1=%s\n", b1);
    log_printf(15, "b2=%s\n", b2);

    for (i=0; i<len; i++) {
        if (mode == 0) {  //** Matching range
            if ((b1[i] != b2[i]) || (last == i)) {
                last_byte = ((last == i) && (b1[i] == b2[i])) ? 1 : 0;
                end = offset + i-1 + last_byte;
                k = end - start + 1;
                log_printf(0, "  MATCH : %d -> %d (%d bytes)\n", start, end, k);

                start = offset + i;
                mode = 1;
            }
        } else {
            if ((b1[i] == b2[i]) || (last == i)) {
                ok = 0;  //** Suppress single byte matches
                if (last != i) {
                    if (b1[i+1] == b2[i+1]) ok = 1;
                }
                if ((ok == 1) || (last == i)) {
                    last_byte = ((last == i) && (b1[i] != b2[i])) ? 1 : 0;
                    end = offset + i-1 + last_byte;
                    k = end - start + 1;
                    log_printf(0, "  DIFFER: %d -> %d (%d bytes)\n", start, end, k);

                    start = offset + i;
                    mode = 0;
                    err = 1;
                }
            }
        }
    }

//i=(b1[last] == b2[last]) ? 0 : 1;
//log_printf(0, "last compare=%d lst=%d\n", i, last);

    flush_log();
    return(err);
}
示例#13
0
Resource_t *resource_list_iterator_next(Resource_list_t *rl, resource_list_iterator_t *it)
{
  int i;
  Resource_t *r;

log_printf(15, "resource_list_iterator_next: start it=%d max=%d n=%d\n", *it, rl->max_res, rl->n); flush_log();

  apr_thread_mutex_lock(rl->lock);

  for (i=*it; i<rl->max_res; i++) {
     if (rl->res[i].used == 1) {
        *it = i + 1;
        r = rl->res[i].r;
        apr_thread_mutex_unlock(rl->lock);
log_printf(15, "resource_list_iterator_next: i=%d r=%s\n", i, r->name); flush_log();
        return(r);
     }
  }
log_printf(15, "resource_list_iterator_next: r=NULL\n"); flush_log();

  apr_thread_mutex_unlock(rl->lock);

  return(NULL);
}
示例#14
0
int select_console(ioType t) {
  static ioType curType = CONSOLE_VACUUM;

  switch (t) {
  case CONSOLE_VACUUM 	: curIo = (console_io*)&vacuum_console_functions; break;
  case CONSOLE_LOG 	: curIo = (console_io*)&log_console_functions; break;
  case CONSOLE_SERIAL 	: curIo = (console_io*)&serial_console_functions; break;
#if defined(USE_KBD_SUPPORT) && defined(USE_VGA_SUPPORT)
  case CONSOLE_VGA 	: curIo = (console_io*)&vga_console_functions; break;
#endif
  default	        : curIo = (console_io*)&vacuum_console_functions;break;
  }
  if (curType == CONSOLE_LOG) flush_log();
  curType = t;
  return 0;
}
示例#15
0
void die(char *message, char *arg1, int exit_code)
{
  char *errmess = strerror(errno);
  
  if (!arg1)
    arg1 = errmess;

  log_stderr = 1; /* print as well as log when we die.... */
  fputc('\n', stderr); /* prettyfy  startup-script message */
  my_syslog(LOG_CRIT, message, arg1, errmess);
  
  log_stderr = 0;
  my_syslog(LOG_CRIT, _("FAILED to start up"));
  flush_log();
  
  exit(exit_code);
}
示例#16
0
void _close_ns(NetStream_t *ns)
{

    log_printf(10, "close_netstream:  Closing stream ns=%d type=%d\n", ns->id, ns->sock_type);
    flush_log();

    ns->cuid = -1;
    if (ns->sock == NULL) return;

    if (ns->sock_status(ns->sock) != 1) return;

    ns->close(ns->sock);

    ns->sock = NULL;

    return;
}
示例#17
0
static apr_status_t ap_buffered_log_writer(request_rec *r,
                                           void *handle,
                                           const char **strs,
                                           int *strl,
                                           int nelts,
                                           apr_size_t len)

{
    char *str;
    char *s;
    int i;
    apr_status_t rv;
    buffered_log *buf = (buffered_log*)handle;

    if ((rv = APR_ANYLOCK_LOCK(&buf->mutex)) != APR_SUCCESS) {
        return rv;
    }

    if (len + buf->outcnt > LOG_BUFSIZE) {
        flush_log(buf);
    }
    if (len >= LOG_BUFSIZE) {
        apr_size_t w;

        str = apr_palloc(r->pool, len + 1);
        for (i = 0, s = str; i < nelts; ++i) {
            memcpy(s, strs[i], strl[i]);
            s += strl[i];
        }
        w = len;
        rv = apr_file_write(buf->handle, str, &w);

    }
    else {
        for (i = 0, s = &buf->outbuf[buf->outcnt]; i < nelts; ++i) {
            memcpy(s, strs[i], strl[i]);
            s += strl[i];
        }
        buf->outcnt += len;
        rv = APR_SUCCESS;
    }

    APR_ANYLOCK_UNLOCK(&buf->mutex);
    return rv;
}
示例#18
0
/*
 * Calibrate PPC timebase frequency the hard way...
 * This is still dumb and horribly inefficient.
 */
static frame_time_t machdep_calibrate_timebase (void)
{
    const int num_loops = 5;
    frame_time_t last_time;
    frame_time_t best_time;
    int i;

    write_log ("Calibrating timebase...\n");
    flush_log ();

    sync ();
    last_time = read_processor_time ();
    for (i = 0; i < num_loops; i++)
	uae_msleep (1000);
    best_time = read_processor_time () - last_time;

    return best_time / num_loops;
}
示例#19
0
void KSYkt_Log_Writer::writelog(const char *fmt,...)
{
	int pos = 0;
	char msg[4096] = "";
	char time_str[15] = "";
	get_current_time(time_str);
	if(open_current_log_file())
		return;
	pos = sprintf(msg,"%s - : ",time_str);
	va_list args;
	va_start(args,fmt);
	pos += vsprintf(msg+pos,fmt,args);
	va_end(args);
	msg[pos] = '\n';
	msg[pos+1] = 0;
	fprintf(log_file_fp_,msg);
	flush_log();
}
示例#20
0
op_generic_t *gop_dummy(op_status_t state)
{
    op_generic_t *gop;

    type_malloc_clear(gop, op_generic_t, 1);

    log_printf(15, " state=%d\n", state.op_status);
    flush_log();

    gop_init(gop);
    gop->base.pc = &_gop_dummy_pc;
    gop->type = Q_TYPE_OPERATION;
//  gop->base.started_execution = 1;
    gop->base.free = _gop_dummy_free;
    gop->base.status = state;
//  gop_mark_completed(gop, state);

    return(gop);
}
示例#21
0
static int finish_log(struct thread_data *td, struct io_log *log, int trylock)
{
	if (td->tp_data)
		iolog_flush(log, 1);

	if (trylock) {
		if (fio_trylock_file(log->filename))
			return 1;
	} else
		fio_lock_file(log->filename);

	if (td->client_type == FIO_CLIENT_TYPE_GUI)
		fio_send_iolog(td, log, log->filename);
	else
		flush_log(log);

	fio_unlock_file(log->filename);
	free_log(log);
	return 0;
}
示例#22
0
文件: tap.c 项目: exoliu/mung
void _fail_unless(
	int result,
	const char *file,
	int line,
	const char *expr,
	...)
{
	if(unlikely(!result)) {
		va_list ap;
		char buf[512];
		va_start(ap, expr);
		const char *msg = va_arg(ap, char *);
		if(msg == NULL) msg = expr;
		vsnprintf(buf, sizeof(buf), msg, ap);
		va_end(ap);
		printf("Bail out!  %s (`%s' in %s:%d)\n", buf, expr, file, line);
		flush_log(true);

		exit_on_fail();
	}
示例#23
0
static int sysmon_toggle_write(struct file *sp_file, const char __user *buf, 
                               size_t size, loff_t *offset)
{
    if (size == 2) // 2 includes the number and \0
    {
        const char number = buf[0];
        if (number == '0') 
        {
            is_logging_toggled = 0;
            printk(KERN_INFO "Sysmon log disabled.\n");
            return size;
        }
        else if (number == '1') 
        {
            is_logging_toggled = 1;
            printk(KERN_INFO "Sysmon log enabled.\n");
            return size;
        }
    }
    if (size == 6) 
    {
        char *str = kmalloc(size, GFP_KERNEL);

	    if (copy_from_user(str, buf, size)) {
		    kfree(str);
		    return -EFAULT; 
	    }

        sscanf(buf, "%6s", str);
        if (strcmp(str, "flush") == 0) 
        {
            printk(KERN_INFO "Flushing log\n");
            flush_log();
        }
        kfree(str);
        return size;
    }
    return -EINVAL;
}
示例#24
0
int main(int argc, char *argv[]){
	//Option Switch
	if (argc > 1){
		char select = *++argv[1];
		switch(select){
			case 'd':
				printf("Command Executed:\t%s\n",command);
				printf("Parameter: %c\n",select);
			break;
			case 'f':
				flush_log();
				printf("Parameter: %c\n",select);
			break;
			case 'p':
				messageBx("Ping Network!");
				int limit = 10;
				if (argc == 3){
					limit = atoi(argv[2]);
				}
				sprintf(command,"date /T >> %s",filename);
				system(command);
				sprintf(command,"ping -n %i %s >> %s",limit,dest_a,filename);
				system(command);
				sprintf(command,"ping -n %i %s >> %s",limit,dest_b,filename);
				system(command);
			break;
			case 'v':
				messageBx("Display Log::");
				sprintf(command,"type %s",filename);
				system(command);
			break;
			default:
				printf("");
			break;
			}
		}
	return 0;
	}
示例#25
0
void ns_config_sock(NetStream_t *ns, int tcpsize)
{
    log_printf(10, "ns_config_sock: ns=%d, \n", ns->id);

    _ns_init(ns, 0);

    ns->sock_type = NS_TYPE_SOCK;
    network_sock_t *sock = (network_sock_t *)malloc(sizeof(network_sock_t));
    assert(sock != NULL);
    memset(sock, 0, sizeof(network_sock_t));
    ns->sock = (net_sock_t *)sock;
//  assert_result_not(apr_pool_create(&(sock->mpool), NULL), APR_SUCCESS);
    int err = apr_pool_create(&(sock->mpool), NULL);
    if (err != APR_SUCCESS) {
        log_printf(0, "ns_config_sock:  apr_pool_crete error = %d\n", err);
        flush_log();
        assert(err == APR_SUCCESS);
    }

//**QWERT
    apr_thread_mutex_create(&(sock->lock), APR_THREAD_MUTEX_DEFAULT,sock->mpool);
//**QWERTY

    sock->tcpsize = tcpsize;
    ns->native_fd = sock_native_fd;
    ns->connect = sock_connect;
    ns->sock_status = sock_status;
    ns->set_peer = sock_set_peer;
    ns->close = sock_close;
//  ns->read = sock_read;
//  ns->write = sock_write;
    ns->read = sock_apr_read;
    ns->write = sock_apr_write;
    ns->accept = sock_accept;
    ns->bind = sock_bind;
    ns->listen = sock_listen;
    ns->connection_request = sock_connection_request;
}
示例#26
0
Task_que_t *create_task_que()
{
  Task_que_t *tq;

//  if ((tq = g_slice_new(Task_que_t)) == NULL) {
  if ((tq = (Task_que_t *)malloc(sizeof(Task_que_t))) == NULL) {
     log_printf(0, "create_task_que: Unable to allocate new struct!\n");
     flush_log();
     return(NULL);
  }

  tq->cid = NULL;
  tq->refcount = 0;
  tq->op = -1;
  tq->owner = -1;
  tq->lock_inuse = 0;
  tq->io_que[TASK_READ_QUE] = new_stack();
  tq->io_que[TASK_WRITE_QUE] = new_stack();

  pthread_mutex_init(&(tq->qlock), NULL);

  return(tq);
}
示例#27
0
static void flush_all_logs(server_rec *s, pool *p)
{
    multi_log_state *mls;
    array_header *log_list;
    config_log_state *clsarray;
    int i;

    for (; s; s = s->next) {
        mls = ap_get_module_config(s->module_config, &config_log_module);
        log_list = NULL;
        if (mls->config_logs->nelts) {
            log_list = mls->config_logs;
        }
        else if (mls->server_config_logs) {
            log_list = mls->server_config_logs;
        }
        if (log_list) {
            clsarray = (config_log_state *) log_list->elts;
            for (i = 0; i < log_list->nelts; ++i) {
                flush_log(&clsarray[i]);
            }
        }
    }
}
示例#28
0
void machdep_init (void)
{
    static int done = 0;

    if (!done) {
	rpt_available = 1;

	write_log ("Calibrating timebase: ");
	flush_log ();

	loops_to_go = 5;
	sync ();
	last_time = read_processor_time ();
	uae_msleep (loops_to_go * 1000);
	best_time = read_processor_time () - last_time;

	syncbase = best_time / loops_to_go;
	write_log ("%.6f MHz\n", (double) syncbase / 1000000);

	sleep_test();

	done = 1;
    }
}
示例#29
0
 /** To integrate without any bookkeeping
  *
  * This function just executes the integration implementation
  * The callee has to take care of systems running and
  * stop conditions and memory management
  *
  */
 virtual void core_integrate() {
     launch_integrator();
     flush_log();
 }
示例#30
0
int main(int argc, const char **argv)
{

  vector<const char*> args;

  Config_t config;
  char *config_file;
  int i;

  global_config = &config;   //** Make the global point to what's loaded
  memset(global_config, 0, sizeof(Config_t));  //** init the data
  global_network = NULL;

  if (argc < 2) {
     printf("ibp_server [-d] config_file\n\n");
     printf("-d          - Run as a daemon\n");
     printf("config_file - Configuration file\n");
     return(0);
  }

  int astart = 1;
  int daemon = 0;
  if (strcmp(argv[astart], "-d") == 0) {
     daemon = 1;
     argv[astart] = "";
     astart++;
  } 

  config_file = (char *)argv[astart];
 
  argv_to_vec(argc, argv, args);
  parse_config_options(args);     // These are for EBOFS 


  //*** Open the config file *****
  printf("Config file: %s\n\n", config_file);

  GKeyFile *keyfile;
  GKeyFileFlags flags;
  GError *error = NULL;

  keyfile = g_key_file_new();
  flags = G_KEY_FILE_NONE;

  /* Load the GKeyFile from disk or return. */
  if (!g_key_file_load_from_file (keyfile, config_file, flags, &error)) {
    g_error (error->message);
    return(-1);
  }

  
  //** Parse the global options first ***
  parse_config(keyfile, &config);

  init_thread_slots(2*config.server.max_threads);  //** Make pigeon holes

  dns_cache_init(1000);
  init_subnet_list(config.server.iface[0].hostname);  

  //*** Install the commands: loads Vectable info and parses config options only ****
  install_commands(keyfile);

  g_key_file_free(keyfile);   //Free the keyfile context

  set_starttime();

  log_preamble(&config);

  configure_signals();   //** Setup the signal handlers

  //*** Set up the shutdown variables  
  pthread_mutex_init(&shutdown_lock, NULL);
  pthread_mutex_unlock(&shutdown_lock);
  shutdown_now = 0;

  //*** Make the searchable version of the resources ***
  config.rl = create_resource_list(config.res, config.n_resources);
//  log_printf(0, "Looking up resource 2 and printing info.....\n")
//  print_resource(resource_lookup(config.rl, "2"), log_fd());

  init_stats(config.server.stats_size);
  lock_alloc_init();

  //***Launch as a daemon if needed***
  if (args.size() == 2) {    //*** Launch as a daemon ***
     if ((strcmp(config.server.logfile, "stdout") == 0) || 
         (strcmp(config.server.logfile, "stderr") == 0)) {
        log_printf(0, "Can't launch as a daemom because log_file is either stdout or stderr\n");  
        log_printf(0, "Running in normal mode\n");  
     } else if (fork() == 0) {    //** This is the daemon
        log_printf(0, "Running as a daemon.\n");
        flush_log();
        fclose(stdin);     //** Need to close all the std* devices **
        fclose(stdout);
        fclose(stderr);

        char fname[1024];
        fname[1023] = '\0';
        snprintf(fname, 1023, "%s.stdout", config.server.logfile);
        assert((stdout = fopen(fname, "w")) != NULL);
        snprintf(fname, 1023, "%s.stderr", config.server.logfile);
        assert((stderr = fopen(fname, "w")) != NULL);
//        stdout = stderr = log_fd();  //** and reassign them to the log device         
printf("ibp_server.c: STDOUT=STDERR=LOG_FD() dnoes not work!!!!!!!!!!!!!!!!!!!!!!!!\n");
     } else {           //** Parent exits
        exit(0);         
     }    
  }

//  test_alloc();   //** Used for testing allocation speed only

  //*** Initialize all command data structures.  This is mainly 3rd party commands ***
  initialize_commands();

  //** Launch the garbage collection threads
  for (i=0; i<config.n_resources; i++) launch_resource_cleanup_thread(&(config.res[i]));
  //*** Start the activity log ***
  alog_open();

  server_loop(&config);     //***** Main processing loop ******

  //*** Shutdown the activity log ***
  alog_close();

  //*** Destroy all the 3rd party structures ***
  destroy_commands();

  lock_alloc_destroy();

  destroy_thread_slots();

  shutdown(&config);

  free_resource_list(config.rl);

  free_stats();

  log_printf(0, "main: Completed shutdown. Exiting\n");
//  close_log();
//  close_debug();
}