sptaskyielded.c 1.29 KB

/**************************************************************************
 *                                                                        *
 *               Copyright (C) 1994, 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 <sptask.h>
#include "osint.h"
#include "rcp.h"

/*
 * Check to see if a recently-done task has yielded.
 */
OSYieldResult
osSpTaskYielded(OSTask *tp)
{
    u32			status;
    OSYieldResult	result;

    status = __osSpGetStatus();
    result = (status & SP_STATUS_YIELDED) ?
	      (OSYieldResult)OS_TASK_YIELDED : (OSYieldResult)0;
    if (status & SP_STATUS_YIELD) {
        tp->t.flags |= result;
        tp->t.flags &= ~OS_TASK_DP_WAIT;
    }
    return (result);
}