Пример #1
0
static void
imp_hotsparepool(
	set_t	setno,
	mddb_recid_t	recid
)
{
	hot_spare_pool_ond_t	*hsp_ond;
	mddb_recid_t		*hsp_recid, *hs_recid;
	int			i;
	uint_t			*hsp_selfid;

	mddb_setrecprivate(recid, MD_PRV_GOTIT);

	hsp_ond = (hot_spare_pool_ond_t *)mddb_getrecaddr(recid);
	hsp_recid = &(hsp_ond->hsp_record_id);
	hsp_selfid = &(hsp_ond->hsp_self_id);
	/*
	 * Fixup the pool and hotspares
	 */
	*hsp_recid = MAKERECID(setno, DBID(*hsp_recid));
	*hsp_selfid = MAKERECID(setno, DBID(*hsp_selfid));

	for (i = 0; i < hsp_ond->hsp_nhotspares; i++) {
		hs_recid = &(hsp_ond->hsp_hotspares[i]);
		*hs_recid = MAKERECID(setno, DBID(*hs_recid));
	}
}
Пример #2
0
classdef::classdef(TOK b)
{
	base = CLASS;
	csu = b;
	memtbl = new table(CTBLSIZE,0,0);
	k_tbl = 0;//SYM
	DBID();
}
Пример #3
0
expr::expr(TOK ba, Pexpr a, Pexpr b)
{
	DBCHECK();

	base = ba;
	e1 = a;
	e2 = b;
	DBID();
}
Пример #4
0
stmt::stmt(TOK ba, loc ll, Pstmt a)
{
	DBCHECK();

	base = ba;
	where = ll;
	s=a;
	memtbl = 0;
	k_tbl = 0;//SYM
	DBID();
}
Пример #5
0
basetype::basetype(TOK b, Pname n)
{
	switch (b) {
	case 0:				break;
	case TYPEDEF:	b_typedef = 1;	break;
	case INLINE:	b_inline = 1;	break;
	case VIRTUAL:	b_virtual = 1;	break;
	case CONST:	b_const = 1;	break;
	case UNSIGNED:	b_unsigned = 1;	break;
	case FRIEND:
	case OVERLOAD:
	case EXTERN:
	case STATIC:
	case AUTO:
	case REGISTER:	b_sto = b;	break;
	case SHORT:	b_short = 1;	break;
	case LONG:	b_long = 1;	break;
	case LLONG:	b_long = 2;	break;
	case ANY:
	case ZTYPE:
	case VOID:
	case CHAR:
	case INT:
	case FLOAT:
	case LDOUBLE:
	case DOUBLE:	base = b; 	break;
	case TYPE:
	case COBJ:
	case EOBJ:
	case FIELD:
	case ASM:
		base = b;
		b_name = n;
		break;
	case SIGNED:
		// error('w',"\"%k\" not implemented (ignored)",b);
		break;
	case VOLATILE:
		error('w',"\"%k\" not implemented (ignored)",b);
		break;
	default:
		error('i',"badBT:%k",b);
	}
	DBID();
}
Пример #6
0
fct::fct(Ptype t, Pname arg, TOK known)
{
	base = FCT;
	nargs_known = known;
	returns = t;
	argtype = arg; 
	DBID();

	if (arg==0 || arg->base==ELIST) return;
//error('d',"fct::fct %d sig %d",this,f_signature);
	register Pname n;
	Pname pn = 0;
	for (n=arg; n; pn=n,n=n->n_list) {
		if( n->n_sto==EXTERN ) error("cannot specify extern linkage for anA");
		if( n->n_sto==STATIC ) error("cannot specify static forA%n",arg);
 
		switch (n->tp->skiptypedefs()->base) {
		case VOID:
			argtype = 0;
			nargs_known = 1;
			if(n->n_initializer)
				error("voidFA");
			else if (n->string)
				error("voidFA%n",n);
			else if (nargs || n->n_list) {
				error("voidFA");
				nargs_known = 0;
			}
			nargs = 0;
			break;
		case CLASS:
		case ENUM:
			error("%k defined inAL (will not be in scope at point of call)",n->tp->base);
			if (n == argtype)
				argtype = n->n_list;
			else
				pn->n_list = n->n_list;
			break;
		default:
			nargs++;
		}
	}
}
Пример #7
0
static void
imp_hotspare(
	set_t	setno,
	mddb_recid_t	recid
)
{
	mddb_de_ic_t	*dep;
	mddb_rb32_t	*rbp;
	hot_spare_t	*hs64;
	hot_spare32_od_t	*hs32;
	mddb_recid_t	*hs_recid;

	mddb_setrecprivate(recid, MD_PRV_GOTIT);

	dep = mddb_getrecdep(recid);
	rbp = dep->de_rb;
	switch (rbp->rb_revision) {
	case MDDB_REV_RB:
	case MDDB_REV_RBFN:
		/*
		 * 32 bit hotspare
		 */
		hs32 = (hot_spare32_od_t *)mddb_getrecaddr(recid);
		hs_recid = &(hs32->hs_record_id);
		break;
	case MDDB_REV_RB64:
	case MDDB_REV_RB64FN:
		hs64 = (hot_spare_t *)mddb_getrecaddr(recid);
		hs_recid = &(hs64->hs_record_id);
		break;
	}

	/*
	 * Fixup the setno
	 */
	*hs_recid = MAKERECID(setno, DBID(*hs_recid));
}