pfssetlabel.c 1.45 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"

s32
osPfsSetLabel(OSPfs *pfs, u8 *label)
{
	int i;
	s32 ret;
	
	if (!(pfs->status & PFS_INITIALIZED))
		return(PFS_ERR_INVALID);

	if ((ret=__osCheckId(pfs)) != 0) {
		return(ret);
	}

	if (label != 0) {
		for(i = 0 ; i < BLOCKSIZE ; i++){
			if (*label == 0) {
				break;
			}
			*(u8 *)((int)(pfs->label) + i) = *label++;
		}
	}
#ifdef	_PFS_1M_EXTENSION
	if ((ret = __osPfsSelectIdBank(pfs)) == 0) {
#else
	if (pfs->activebank != 0)
	  if ((ret = __osPfsSelectBank(pfs, 0)) == 0) {
#endif
	  ret = __osContRamWrite(pfs->queue, pfs->channel,
				 PFS_LABEL_AREA,(u8 *)pfs->label, 0);
	}
	return(ret);
}