void
db_bus_write_cmd(db_expr_t addr, bool have_addr, db_expr_t count,
    const char *modif)
{
	db_expr_t datum;
	bus_space_tag_t iot = &iobus_bs_tag; /* XXX */
	bus_space_handle_t ioh;

	if (!have_addr)
		db_error("target address must be specified");

	bus_space_map(iot, addr, 1, 0, &ioh);

	while (db_expression(&datum)) {
		switch (*modif) {
		case 'b':
			bus_space_write_1(iot, ioh, 0, datum);
			break;
		case '\0':
		case 'h':
			bus_space_write_2(iot, ioh, 0, datum);
			break;
		default:
			db_error("bad modifier");
		}
	}
	bus_space_unmap(iot, ioh, 1);
	db_skip_to_eol();
}
Esempio n. 2
0
void
db_def_macro_cmd(void)
{
	register char *p;
	register int c;
	register struct db_user_macro *mp, *ep;

	if (db_read_token() != tIDENT) {
	    db_printf("Bad macro name \"%s\"\n", db_tok_string);
	    db_error(0);
	    /* NOTREACHED */
	}
	if ((mp = db_lookup_macro(db_tok_string)) == 0) {
	    if (db_macro_free <= 0)
		db_error("Too many macros\n");
		/* NOTREACHED */
	    ep = &db_user_macro[DB_NUSER_MACRO];
	    for (mp = db_user_macro; mp < ep && mp->m_name[0]; mp++);
	    if (mp >= ep)
		db_error("ddb: internal error(macro)\n");
		/* NOTREACHED */
	    db_macro_free--;
	    strlcpy(mp->m_name, db_tok_string, TOK_STRING_SIZE);
	}
	for (c = db_read_char(); c == ' ' || c == '\t'; c = db_read_char());
	for (p = mp->m_lbuf; c > 0; c = db_read_char())
	    *p++ = c;
	*p = 0;
	mp->m_size = p - mp->m_lbuf;
}
Esempio n. 3
0
boolean_t
db_shift_expr(db_expr_t *valuep)
{
	db_expr_t	lhs, rhs;
	int		t;

	if (!db_add_expr(&lhs))
	    return (FALSE);

	t = db_read_token();
	while (t == tSHIFT_L || t == tSHIFT_R) {
	    if (!db_add_expr(&rhs)) {
		db_error("Syntax error\n");
		/*NOTREACHED*/
	    }
	    if (rhs < 0) {
		db_error("Negative shift amount\n");
		/*NOTREACHED*/
	    }
	    if (t == tSHIFT_L)
		lhs <<= rhs;
	    else {
		/* Shift right is unsigned */
		lhs = (unsigned) lhs >> rhs;
	    }
	    t = db_read_token();
	}
	db_unread_token(t);
	*valuep = lhs;
	return (TRUE);
}
Esempio n. 4
0
static const char *readline()
{
    int count;
    db_msg("prepare to readline\n");
      do{
            count = read(device_fd, s_ATBuffer,MAX_AT_RESPONSE);
            db_msg("readline count=%d\n",count);
                         
        } while (count < 0 && errno == EINTR);
      
        if (count > 0){ 
            
            s_ATBuffer[count] = '\0';//mark the string end
        }
        else if (count<=0) {
            /* read error encountered or EOF reached */
            if(count == 0) {
                db_error("ATchannel: EOF reached\n");
            } else {
                db_error("ATchannel: read error %s\n", strerror(errno));
            }
            return NULL;
        }
      
    return s_ATBuffer;
}
Esempio n. 5
0
void
db_check_interrupt(void)
{
    int	c;

    c = cnmaygetc();
    switch (c) {
    case -1:		/* no character */
        return;

    case CTRL('c'):
        db_error(NULL);
    /*NOTREACHED*/

    case CTRL('s'):
        do {
            c = cnmaygetc();
            if (c == CTRL('c'))
                db_error(NULL);
        } while (c != CTRL('q'));
        break;

    default:
        /* drop on floor */
        break;
    }
}
Esempio n. 6
0
void
db_set_cmd(db_expr_t dummy1, bool dummy2, db_expr_t dummy3, char *dummy4)
{
	struct db_variable *vp;
	db_expr_t value;
	int t;

	t = db_read_token();
	if (t != tDOLLAR) {
		db_error("Unknown variable\n");
		return;
	}
	if (!db_find_variable(&vp)) {
		db_error("Unknown variable\n");
		return;
	}

	t = db_read_token();
	if (t != tEQ)
		db_unread_token(t);

	if (!db_expression(&value)) {
		db_error("No value\n");
		return;
	}
	if (db_read_token() != tEOL)
		db_error("?\n");

	db_write_variable(vp, value);
}
Esempio n. 7
0
boolean_t
db_unary(db_expr_t *valuep)
{
	int	t;

	t = db_read_token();
	if (t == tMINUS) {
	    if (!db_unary(valuep)) {
		db_error("Syntax error\n");
		/*NOTREACHED*/
	    }
	    *valuep = -*valuep;
	    return (TRUE);
	}
	if (t == tSTAR) {
	    /* indirection */
	    if (!db_unary(valuep)) {
		db_error("Syntax error\n");
		/*NOTREACHED*/
	    }
	    *valuep = db_get_value((db_addr_t)*valuep, sizeof(int), FALSE);
	    return (TRUE);
	}
	db_unread_token(t);
	return (db_term(valuep));
}
Esempio n. 8
0
boolean_t
db_mult_expr(db_expr_t *valuep)
{
	db_expr_t	lhs, rhs;
	int		t;

	if (!db_unary(&lhs))
	    return (FALSE);

	t = db_read_token();
	while (t == tSTAR || t == tSLASH || t == tPCT || t == tHASH) {
	    if (!db_term(&rhs)) {
		db_error("Syntax error\n");
		/*NOTREACHED*/
	    }
	    if (t == tSTAR)
		lhs *= rhs;
	    else {
		if (rhs == 0) {
		    db_error("Divide by 0\n");
		    /*NOTREACHED*/
		}
		if (t == tSLASH)
		    lhs /= rhs;
		else if (t == tPCT)
		    lhs %= rhs;
		else
		    lhs = ((lhs+rhs-1)/rhs)*rhs;
	    }
	    t = db_read_token();
	}
	db_unread_token(t);
	*valuep = lhs;
	return (TRUE);
}
Esempio n. 9
0
void PlayBack::cdrplaybackicon(HWND hWnd,ResourceID mId,int iCmdShow)
{
	int retval;
	CDR_RECT rect;
	ResourceManager* rm;
	HWND retWnd;

	rm = ResourceManager::getInstance();
	retval = rm->getResBmp(mId, BMPTYPE_BASE, bmpIcon);
	if(retval < 0) {
		db_error("get current playback icon bmp failed\n");
		//return -1;
	}	
	rm->getResRect(mId, rect);	
	db_msg("luo rect.x=%d rect.y=%d rect.w=%d rect.h=%d \n ",rect.x,rect.y,rect.w,rect.h);
	
	retWnd = CreateWindowEx(CTRL_STATIC, "",
			WS_VISIBLE | WS_CHILD | SS_BITMAP | SS_CENTERIMAGE,
			WS_EX_TRANSPARENT,
			mId,		
			rect.x, rect.y,rect.w,rect.h,
			hWnd, (DWORD)&bmpIcon);
	
	if(retWnd == HWND_INVALID) {
		db_error("create playback icon label failed\n");
		//return -1;
	}
	ShowWindow(retWnd, iCmdShow);	
//	return 0;
}
Esempio n. 10
0
static int setup_device(char *device_node_path,int setup_delay)
{
	struct termios  ios;

	device_fd= open (device_node_path, O_RDWR);
	if(device_fd<0){
		db_error("2glooptester:open device error\n");
	}

	/* disable echo on serial ports */
	tcgetattr( device_fd, &ios );
	ios.c_lflag = 0;  

	tcflush(device_fd, TCIFLUSH);
	cfsetospeed(&ios,B115200);
	if(tcsetattr( device_fd, TCSANOW, &ios )){
		db_error("set tty attr fail\n");
		return -1;
	}
	
	db_msg("sleep %d s to wait for hardware ready\n",setup_delay);
	sleep(setup_delay);//sleep befor hardware get ready

	return 0;
}
Esempio n. 11
0
int
scan_db(DB *dbp)
{
    DBC *cursor;
    int ret, num_recs = 0;
    DBT key, data;

    ret = dbp->cursor(dbp, 0, &cursor, 0);
    if(ret)
    {
	db_error("DB->cursor", ret);
	return ret;
    }

    memset(&key, 0, sizeof(DBT));    
    memset(&data, 0, sizeof(DBT));
    
    while( (ret = cursor->c_get(cursor, &key, &data, DB_NEXT)) == 0)
	num_recs++;
    
    if(ret == DB_NOTFOUND)
	printf("Scan of %s completed successfully. Scanned %d records\n",
	       dbp->fname, num_recs);
    else
    {
	db_error("DBC->get", ret);
	return ret;
    }
    cursor->c_close(cursor);
    return 0;
}
Esempio n. 12
0
/*
 * Create new db handle.
 */
int
create_db(DB_ENV *db_envp, DB **dbp, int PAGE_SIZE, int add_flags)
{
    int err;

    if(( err = db_create(dbp, db_envp, 0)))
    {
	db_error("db_create", err);
	return err;
    }
    if((err = (*dbp)->set_pagesize(*dbp, PAGE_SIZE)))
    {
	db_error("DB->set_pagesize", err);
	return err;
    }
    if(add_flags)
    {
	if ((err = (*dbp)->set_flags(*dbp, add_flags)) != 0)
	{
	    db_error("DB->set_flags", err);
	    return err;
	}
    }
    return 0;
}
Esempio n. 13
0
/*ARGSUSED*/
void
db_set_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
{
	db_expr_t	value;
	struct db_variable *vp;
	int	t;

	t = db_read_token();
	if (t != tDOLLAR) {
	    db_error("Unknown variable\n");
	    /*NOTREACHED*/
	}
	if (!db_find_variable(&vp)) {
	    db_error("Unknown variable\n");
	    /*NOTREACHED*/
	}

	t = db_read_token();
	if (t != tEQ)
	    db_unread_token(t);

	if (!db_expression(&value)) {
	    db_error("No value\n");
	    /*NOTREACHED*/
	}
	if (db_read_token() != tEOL) {
	    db_error("?\n");
	    /*NOTREACHED*/
	}

	db_write_variable(vp, &value);
}
Esempio n. 14
0
///
/// @param name		Table name to check for
/// @return			True if table name exists
///
/// Return whether a table with the specified name exists in the current database.
bool	sqlite::table_exists(const std::string& name)
{
	assert(db_);

	// check the master table first
	std::string sql = "select name from sqlite_master where type IN ('table','view') AND name=?";
	sqlite3_stmt* stmt;
	if(sqlite3_prepare(db_, sql.c_str(), sql.length(), &stmt, 0) != SQLITE_OK)
		throw db_error(sqlite3_errmsg(db_));

	sqlite3_bind_text(stmt, 1, name.c_str(), name.length(), SQLITE_TRANSIENT);

	int result = sqlite3_step(stmt);
	sqlite3_finalize(stmt);
	if(result == SQLITE_ROW)
		return true;

	// check the temp_master table last
	sql = "select name from sqlite_temp_master where type IN ('table','view') AND name=?";
	if(sqlite3_prepare(db_, sql.c_str(), sql.length(), &stmt, 0) != SQLITE_OK)
		throw db_error(sqlite3_errmsg(db_));

	sqlite3_bind_text(stmt, 1, name.c_str(), name.length(), SQLITE_TRANSIENT);
	result = sqlite3_step(stmt);
	sqlite3_finalize(stmt);
	return result == SQLITE_ROW;
}
Esempio n. 15
0
void
db_kill_proc(db_expr_t addr, bool haddr,
    db_expr_t count, const char *modif)
{
#ifdef _KERNEL	/* XXX CRASH(8) */
	struct proc *p;
	ksiginfo_t	ksi;
	db_expr_t pid, sig;
	int t;

	/* What pid? */
	if (!db_expression(&pid)) {
	       db_error("pid?\n");
	       /*NOTREACHED*/
	}
	/* What sig? */
	t = db_read_token();
	if (t == tCOMMA) {
	       if (!db_expression(&sig)) {
		       db_error("sig?\n");
		       /*NOTREACHED*/
	       }
	} else {
	       db_unread_token(t);
	       sig = 15;
	}
	if (db_read_token() != tEOL) {
	       db_error("?\n");
	       /*NOTREACHED*/
	}
	/* We might stop when the mutex is held or when not */
	t = mutex_tryenter(proc_lock);
#ifdef DIAGNOSTIC
	if (!t) {
	       db_error("could not acquire proc_lock mutex\n");
	       /*NOTREACHED*/
	}
#endif
	p = proc_find((pid_t)pid);
	if (p == NULL) {
		if (t)
			mutex_exit(proc_lock);
		db_error("no such proc\n");
		/*NOTREACHED*/
	}
	KSI_INIT(&ksi);
	ksi.ksi_signo = sig;
	ksi.ksi_code = SI_USER;
	ksi.ksi_pid = 0;
	ksi.ksi_uid = 0;
	mutex_enter(p->p_lock);
	kpsignal2(p, &ksi);
	mutex_exit(p->p_lock);
	if (t)
		mutex_exit(proc_lock);
#else
	db_printf("This command is not currently supported.\n");
#endif
}
Esempio n. 16
0
/*ARGSUSED*/
void
db_write_cmd(db_expr_t	address, boolean_t have_addr, db_expr_t count,
    char *modif)
{
	db_addr_t	addr;
	db_expr_t	old_value;
	db_expr_t	new_value;
	int		size;
	boolean_t	wrote_one = FALSE;
	char		tmpfmt[28];

	addr = (db_addr_t) address;

	switch (modif[0]) {
	case 'b':
		size = 1;
		break;
	case 'h':
		size = 2;
		break;
	case 'l':
	case '\0':
		size = 4;
		break;
#ifdef __LP64__
	case 'q':
		size = 8;
		break;
#endif
	default:
		size = -1;
		db_error("Unknown size\n");
		/*NOTREACHED*/
	}

	while (db_expression(&new_value)) {
		old_value = db_get_value(addr, size, FALSE);
		db_printsym(addr, DB_STGY_ANY, db_printf);
		db_printf("\t\t%s\t", db_format(tmpfmt, sizeof tmpfmt,
		    old_value, DB_FORMAT_N, 0, 8));
		db_printf("=\t%s\n",  db_format(tmpfmt, sizeof tmpfmt,
		    new_value, DB_FORMAT_N, 0, 8));
		db_put_value(addr, size, new_value);
		addr += size;

		wrote_one = TRUE;
	}

	if (!wrote_one) {
		db_error("Nothing written.\n");
		/*NOTREACHED*/
	}

	db_next = addr;
	db_prev = addr - size;

	db_skip_to_eol();
}
Esempio n. 17
0
void
db_cond_cmd(void)
{
	register  int c;
	register  struct db_cond *cp;
	register  char *p;
	db_expr_t value;
	db_thread_breakpoint_t bkpt;

	if (db_read_token() != tHASH || db_read_token() != tNUMBER) {
	    db_printf("#<number> expected instead of \"%s\"\n", db_tok_string);
	    db_error(0);
	    return;
	}
	if ((bkpt = db_find_breakpoint_number(db_tok_number, 0)) == 0) {
	    db_printf("No such break point #%d\n", db_tok_number);
	    db_error(0);
	    return;
	}
	/*
	 * if the break point already has a condition, free it first
	 */
	if (bkpt->tb_cond > 0) {
	    cp = &db_cond[bkpt->tb_cond - 1];
	    db_cond_free(bkpt);
	} else {
	    if (db_ncond_free <= 0) {
		db_error("Too many conditions\n");
		return;
	    }
	    for (cp = db_cond; cp < &db_cond[DB_MAX_COND]; cp++)
		if (cp->c_size == 0)
		    break;
	    if (cp >= &db_cond[DB_MAX_COND])
		panic("bad db_cond_free");
	}
	for (c = db_read_char(); c == ' ' || c == '\t'; c = db_read_char());
	for (p = cp->c_cond_cmd; c >= 0; c = db_read_char())
	    *p++ = c;
	/*
	 * switch to saved data and call db_expression to check the condition.
	 * If no condition is supplied, db_expression will return false.
	 * In this case, clear previous condition of the break point.
         * If condition is supplied, set the condition to the permanent area.
	 * Note: db_expression will not return here, if the condition
	 *       expression is wrong.
	 */
	db_switch_input(cp->c_cond_cmd, p - cp->c_cond_cmd);
	if (!db_expression(&value)) {
	    /* since condition is already freed, do nothing */
	    db_flush_lex();
	    return;
	}
	db_flush_lex();
	db_ncond_free--;
	cp->c_size = p - cp->c_cond_cmd;
	bkpt->tb_cond = (cp - db_cond) + 1;
}
Esempio n. 18
0
/*ARGSUSED*/
void
db_write_cmd(db_expr_t address, bool have_addr,
    db_expr_t count, const char *modif)
{
	db_addr_t	addr;
	db_expr_t	old_value;
	db_expr_t	new_value;
	int		size;
	bool		wrote_one;
	bool		show_old_val;

	addr = (db_addr_t) address;
	wrote_one = false;
	show_old_val = islower((unsigned char)modif[0]);

	switch (tolower((unsigned char)modif[0])) {
	case 'b':
		size = 1;
		break;
	case 'h':
		size = 2;
		break;
	case 'l':
	case '\0':
		size = 4;
		break;
	default:
		size = -1;
		db_error("Unknown size\n");
		/*NOTREACHED*/
	}

	while (db_expression(&new_value)) {
		db_printsym(addr, DB_STGY_ANY, db_printf);
		if (show_old_val) {
			old_value = db_get_value(addr, size, false);
			db_printf("\t\t%s = ", db_num_to_str(old_value));
			db_printf("%s\n", db_num_to_str(new_value));
		}
		else
			db_printf("\t\t= %s\n", db_num_to_str(new_value));
		db_put_value(addr, size, new_value);
		addr += size;

		wrote_one = true;
	}

	if (!wrote_one) {
		db_error("Nothing written.\n");
		/*NOTREACHED*/
	}

	db_next = addr;
	db_prev = addr - size;

	db_skip_to_eol();
}
Esempio n. 19
0
static boolean_t
db_term(db_expr_t *valuep)
{
	int	t;

	t = db_read_token();
	if (t == tIDENT) {
	    if (!db_value_of_name(db_tok_string, valuep) &&
		!db_value_of_name_pcpu(db_tok_string, valuep) &&
		!db_value_of_name_vnet(db_tok_string, valuep)) {
		db_error("Symbol not found\n");
		/*NOTREACHED*/
	    }
	    return (TRUE);
	}
	if (t == tNUMBER) {
	    *valuep = (db_expr_t)db_tok_number;
	    return (TRUE);
	}
	if (t == tDOT) {
	    *valuep = (db_expr_t)db_dot;
	    return (TRUE);
	}
	if (t == tDOTDOT) {
	    *valuep = (db_expr_t)db_prev;
	    return (TRUE);
	}
	if (t == tPLUS) {
	    *valuep = (db_expr_t) db_next;
	    return (TRUE);
	}
	if (t == tDITTO) {
	    *valuep = (db_expr_t)db_last_addr;
	    return (TRUE);
	}
	if (t == tDOLLAR) {
	    if (!db_get_variable(valuep))
		return (FALSE);
	    return (TRUE);
	}
	if (t == tLPAREN) {
	    if (!db_expression(valuep)) {
		db_error("Syntax error\n");
		/*NOTREACHED*/
	    }
	    t = db_read_token();
	    if (t != tRPAREN) {
		db_error("Syntax error\n");
		/*NOTREACHED*/
	    }
	    return (TRUE);
	}
	db_unread_token(t);
	return (FALSE);
}
Esempio n. 20
0
int setup_2g_device(char *device_node_path,int setup_delay)
{
    char *p_cur;
    int sl;
    struct termios  ios;
    
    device_fd= open (device_node_path, O_RDWR);
    if(device_fd<0)
    {
        db_error("2gtester:open device error\n");
    }
    
   /* disable echo on serial ports */
   tcgetattr( device_fd, &ios );
   ios.c_lflag = 0;  

   tcflush(device_fd, TCIFLUSH);
   cfsetospeed(&ios,B115200);
   
   if(tcsetattr( device_fd, TCSANOW, &ios ))
   {
      db_error("set tty attr fail\n");
      return 0;
   }
   
    db_msg("sleep %d s to wait for hardware ready\n",setup_delay);

    sleep(setup_delay);//sleep befor hardware get ready
    readline(); //dump the  msg
    db_msg("2gtester dump readline: %s\n",s_ATBuffer);

    
    if(writeline("AT+CSQ")){ //WRITE single query command
        return 0;
    }
    
    sleep(1);
    if(!readline()){
        db_error("2gtester:no correct response for the AT+CSQ\n");
        return 0;
    }
    db_msg("2gtester AT+CSQ readline: %s\n",s_ATBuffer);
    p_cur=strstr(s_ATBuffer,"+CSQ:");
    if (*p_cur == NULL) {
        return 0;
    }

    p_cur+=5; //point to the rssi start position
    db_msg("p_cur=%s\n",p_cur);
    sl=atoi(p_cur);
    sl=(sl*2)-113;
    db_msg("sl=%d\n",sl);
    return sl;
    
}
Esempio n. 21
0
long
db_i386_reg_value(
	struct	db_variable	*vp,
	db_expr_t		*valuep,
	int			flag,
	db_var_aux_param_t	ap)
{
	long			*dp = 0;
	db_expr_t		null_reg = 0;
	register thread_t	thread = ap->thread;
	extern unsigned		int_stack_high;

	if (db_option(ap->modif, 'u')) {
	    if (thread == THREAD_NULL) {
		if ((thread = current_thread()) == THREAD_NULL)
		    db_error("no user registers\n");
	    }
	    if (thread == current_thread()) {
		if (ddb_regs.cs & 0x3)
		    dp = vp->valuep;
		else if (ddb_regs.ebp < int_stack_high)
		    db_error("cannot get/set user registers in nested interrupt\n");
	    }
	} else {
	    if (thread == THREAD_NULL || thread == current_thread()) {
		dp = vp->valuep;
	    } else if ((thread->state & TH_SWAPPED) == 0 &&
			thread->kernel_stack) {
		dp = db_lookup_i386_kreg(vp->name,
				(long *)(STACK_IKS(thread->kernel_stack)));
		if (dp == 0)
		    dp = &null_reg;
	    } else if ((thread->state & TH_SWAPPED) &&
			thread->swap_func != thread_exception_return) {
/*.....this breaks t/t $taskN.0...*/
		/* only EIP is valid */
		if (vp->valuep == (long *) &ddb_regs.eip) {
		    dp = (long *)(&thread->swap_func);
		} else {
		    dp = &null_reg;
		}
	    }
	}
	if (dp == 0) {
	    if (thread->pcb == 0)
		db_error("no pcb\n");
	    dp = (long *)((long)(&thread->pcb->iss) +
		    ((long)vp->valuep - (long)&ddb_regs));
	}
	if (flag == DB_VAR_SET)
	    *dp = *valuep;
	else
	    *valuep = *dp;
}
Esempio n. 22
0
///
/// @param path		Path to sqlite database file
///
/// Close any previous connection and open a new connection to the
/// sqlite database in the specified file.
void	sqlite::open(const std::string& path)
{
	const int	c_busy_timeout		= 5000;

	if(sqlite3_open(path.c_str(), &db_) != SQLITE_OK)
		throw db_error(sqlite3_errmsg(db_));
	if(!db_)
		throw db_error(std::string("can't open database: ") + path);

	sqlite3_busy_timeout(db_, c_busy_timeout);
}
Esempio n. 23
0
/*
 * Write bytes to task address space for debugger.
 */
void
db_write_bytes(
	vm_offset_t	addr,
	int		size,
	char		*data,
	task_t		task)
{
	int		n,max;
	addr64_t	phys_dst;
	addr64_t 	phys_src;
	pmap_t	pmap;
	
	while (size > 0) {

		phys_src = db_vtophys(kernel_pmap, (vm_offset_t)data); 
		if (phys_src == 0) {
			db_printf("\nno memory is assigned to src address %08x\n",
				  data);
			db_error(0);
			/* NOTREACHED */
		}
		
		/* space stays as kernel space unless in another task */
		if (task == NULL) pmap = kernel_pmap;
		else pmap = task->map->pmap;

		phys_dst = db_vtophys(pmap, (vm_offset_t)addr);  
		if (phys_dst == 0) {
			db_printf("\nno memory is assigned to dst address %08x\n",
				  addr);
			db_error(0);
			/* NOTREACHED */
		}

		/* don't over-run any page boundaries - check src range */
		max = round_page_64(phys_src + 1) - phys_src;
		if (max > size)
			max = size;
		/* Check destination won't run over boundary either */
		n = round_page_64(phys_dst + 1) - phys_dst;
		if (n < max)
			max = n;
		size -= max;
		addr += max;
		phys_copy(phys_src, phys_dst, max);

		/* resync I+D caches */
		sync_cache64(phys_dst, max);

		phys_src += max;
		phys_dst += max;
	}
}
Esempio n. 24
0
/*
 * Loads the Customer Table
 */
void 
LoadCust(void)
{
    long    w_id;
    long    d_id;
    char   *name = CUSTOMER_INDEX_NAME;
    char   *sec_name = CUSTOMER_SECONDARY_NAME;
    char   *hist_name = HISTORY_INDEX_NAME;
    DB     *dbp_sec;
    int     err;

    if(create_db(db_env, &dbp_customer,DB_COMMON_PAGE_SIZE, 0) || open_db(dbp_customer, name, 0)) 
	return;

    if(create_db(db_env, &dbp_sec, DB_COMMON_PAGE_SIZE, DB_DUP | DB_DUPSORT))
	return;
    
    if((err = dbp_sec->set_bt_compare(dbp_sec, customer_secondary_comparison_func)))
    {
	db_error("DB->set_bt_compare", err);
	goto done;
    }
    
    if(open_db(dbp_sec, sec_name, 0)) 
	return;

    if ((err = dbp_customer->associate(dbp_customer, 0, dbp_sec, get_customer_sec_key, 0)) != 0)
    {
	db_error("DB->associate failed: %s\n", err);
	goto done;
    }

    if(create_db(db_env, &dbp_history, DB_COMMON_PAGE_SIZE, 0) || open_db(dbp_history, hist_name, 0)) 
	return;

    for (w_id=1L; w_id<=count_ware; w_id++) 
	for (d_id=1L; d_id<=DIST_PER_WARE; d_id++) 
	{
	    if(Customer(d_id,w_id))
		goto done;
	}
   
 done:
   if(dbp_customer)
       dbp_customer->close(dbp_customer, 0);
   if(dbp_sec)
       dbp_sec->close(dbp_sec, 0);
   if(dbp_history)
       dbp_history->close(dbp_history, 0);
}
Esempio n. 25
0
int
db_user_to_kernel_address(
	const task_t	task,
	vm_offset_t	addr,
	vm_offset_t	*kaddr,
	int		flag)
{
	pt_entry_t *ptp;
	boolean_t	faulted = FALSE;

	retry:
	ptp = pmap_pte(task->map->pmap, addr);
	if (ptp == PT_ENTRY_NULL || (*ptp & INTEL_PTE_VALID) == 0) {
	    if (!faulted && !db_no_vm_fault) {
		kern_return_t	err;

		faulted = TRUE;
		err = vm_fault( task->map,
				trunc_page(addr),
				VM_PROT_READ,
				FALSE, FALSE, 0);
		if (err == KERN_SUCCESS)
		    goto retry;
	    }
	    if (flag) {
		db_printf("\nno memory is assigned to address %08x\n", addr);
		db_error(0);
		/* NOTREACHED */
	    }
	    return(-1);
	}
	*kaddr = ptetokv(*ptp) + (addr & (INTEL_PGBYTES-1));
	return(0);
}
Esempio n. 26
0
int
db_find_variable(struct db_variable **varp)
{
	int	t;
	struct db_variable *vp;

	t = db_read_token();
	if (t == tIDENT) {
	    for (vp = db_vars; vp < db_evars; vp++) {
		if (!strcmp(db_tok_string, vp->name)) {
		    *varp = vp;
		    return (1);
		}
	    }
	    for (vp = db_regs; vp < db_eregs; vp++) {
		if (!strcmp(db_tok_string, vp->name)) {
		    *varp = vp;
		    return (1);
		}
	    }
	}
	db_error("Unknown variable\n");
	/*NOTREACHED*/
	return 0;
}
Esempio n. 27
0
/*
 *  kdb_trap - field a TRACE or BPT trap
 */
int
kdb_trap(int type, db_regs_t *regs)
{
    int s;

    switch (type) {
    case T_BREAKPOINT:	/* breakpoint */
    case -1:		/* keyboard interrupt */
        break;
    default:
        if (db_recover != 0) {
            /* This will longjmp back into db_command_loop() */
            db_error("Faulted in DDB; continuing...\n");
            /*NOTREACHED*/
        }
    }

    /* Should switch to kdb`s own stack here. */

    ddb_regs = *regs;

    s = splhigh();
    db_active++;
    cnpollc(TRUE);
    db_trap(type, 0/*code*/);
    cnpollc(FALSE);
    db_active--;
    splx(s);

    *regs = ddb_regs;

    return (1);
}
Esempio n. 28
0
static int DBClosureLua(lua_State* l)
{
	if (! lins_database) lins_database = new_database();
	int n = lua_gettop(l);
	str qry = lua2str(lua_upvalueindex(1));
	for (int i = 1; i <= n; ++i)
		qry = append(qry,_("'%s'%s", lua2str(i), i < n ? _(","): _("")));
	lua_pop(l,n);
	qry = append(qry,_(")"));
	int res = query(qry);
	if (res < 0) {
		str2lua(db_error());
		return 1;
	}
	lua_newtable(l);
	n = lua_gettop(l);
	for (int i = 0; i < res; ++i) {
		lua_pushnumber(l,i+1);
		lua_newtable(l);
		for (int j = 0; j < fields(); ++j) {
			str2lua(field(j));
			str2lua(fetch(i,j));
			lua_settable(l,n+2);
		}
		lua_settable(l,n);
	}
	return 1;
}
Esempio n. 29
0
/*!
   \fn 
   \brief 
   \return 
   \param 
 */
int
db_convert_value_to_string(dbValue * value, int sqltype, dbString * string)
{
    char buf[64];
    const char *bp = buf;

    if (db_test_value_isnull(value)) {
	*buf = 0;
    }
    else {
	switch (db_sqltype_to_Ctype(sqltype)) {
	case DB_C_TYPE_INT:
	    sprintf(buf, "%d", db_get_value_int(value));
	    break;
	case DB_C_TYPE_DOUBLE:
	    sprintf(buf, "%.15g", db_get_value_double(value));
	    G_trim_decimal(buf);
	    break;
	case DB_C_TYPE_STRING:
	    bp = db_get_value_string(value);
	    break;
	case DB_C_TYPE_DATETIME:
	    return db_convert_value_datetime_into_string(value, sqltype,
							 string);
	default:
	    db_error
		("db_convert_value_into_string(): unrecongized sqltype-type");
	    return DB_FAILED;
	}
    }
    return db_set_string(string, bp);
}
Esempio n. 30
0
/*!
   \fn 
   \brief 
   \return 
   \param 
 */
int
db_convert_Cstring_to_value(const char *Cstring, int sqltype, dbValue * value)
{
    int i;
    double d;

    switch (db_sqltype_to_Ctype(sqltype)) {
    case DB_C_TYPE_STRING:
	return db_set_value_string(value, Cstring);
    case DB_C_TYPE_INT:
	i = 0;
	sscanf(Cstring, "%d", &i);
	db_set_value_int(value, i);
	break;
    case DB_C_TYPE_DOUBLE:
	d = 0.0;
	sscanf(Cstring, "%lf", &d);
	db_set_value_double(value, d);
	break;
    case DB_C_TYPE_DATETIME:
	return db_convert_Cstring_to_value_datetime(Cstring, sqltype, value);
    default:
	db_error("db_convert_Cstring_to_value(): unrecognized sqltype");
	return DB_FAILED;
    }
    return DB_OK;
}