pfsinit.c 1.52 KB
/**************************************************************************
 *                                                                        *
 *               Copyright (C) 1995, Silicon Graphics, Inc.               *
 *                                                                        *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
 *  are protected by Federal copyright law.  They  may  not be disclosed  *
 *  to  third  parties  or copied or duplicated in any form, in whole or  *
 *  in part, without the prior written consent of Silicon Graphics, Inc.  *
 *                                                                        *
 **************************************************************************/

#include "osint.h"
#include "controller.h"
#include "siint.h"

extern	s32	__osCheckPackId(OSPfs *, __OSPackId *);
extern	s32	__osRepairPackId(OSPfs *, __OSPackId *, __OSPackId *);

s32
osPfsInit(OSMesgQueue *queue, OSPfs *pfs, int channel)
{
	s32 ret = 0;

	/* Block to get resource token */
        __osSiGetAccess();

	ret = __osPfsGetStatus(queue, channel);
	
	__osSiRelAccess();

	if (ret != 0) {
	  return(ret);
	}
	
	pfs->queue = queue;
	pfs->channel = channel;
	pfs->status = 0;
	pfs->activebank = 255;

	/* Check vaild id */

	if ((ret = __osGetId(pfs)) != 0)
		return(ret);

	/* Check integrity of file system -- call osPfsChecker() */

	ret = osPfsChecker(pfs);

	pfs->status |= PFS_INITIALIZED;
	return(ret);
}