⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 davrecpg.c

📁 Flash file system
💻 C
📖 第 1 页 / 共 2 页
字号:
/* Copyright (c) 1995-2002 Intel Corporation */
/* Intel Confidential                        */

/* ###########################################################################
###  RECPAGE
###
###  Module: recpage.c - Page Reclaim Specific Code
###
###  $Workfile: davRecpg.c $
###  $Revision: 1.1 $
###  $NoKeywords: $
########################################################################### */

/****************************************************************************
INTEL OEM SOFTWARE LICENSE AGREEMENT (LICENSE.TXT)

BY USING THIS SOFTWARE, YOU ("You" or "Licensee") ARE AGREEING TO BE 
BOUND BY THE TERMS OF THIS AGREEMENT.  DO NOT USE THE SOFTWARE UNTIL 
YOU HAVE CAREFULLY READ AND AGREED TO THE FOLLOWING TERMS AND 
CONDITIONS.  IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, 
PROMPTLY RETURN THE SOFTWARE, PACKAGING, AND ANY ACCOMPANYING ITEMS. 
YOU MUST BE AN ORIGINAL EQUIPMENT MANUFACTURER ("OEM") SYSTEM DEVELOPER 
TO ACQUIRE ANY RIGHTS IN THE SOFTWARE UNDER THIS LICENSE AGREEMENT.

"Source Code" means source code that you receive from Intel under this 
Agreement.  "Derived Object Code" means executable code derived from 
Intel Source Code.  "Software" means the Intel Source Code and object 
code (unmodified by you) and related documentation that You receive 
from Intel under this Agreement.

LICENSE: Intel Corporation ("Intel") grants You the non-exclusive, 
nontransferable, royalty free right under Intel copyright to:

 1. Reproduce and modify the Software, only for your own development 
    and maintenance, provided that You may not modify the Software for 
    use with flash products other than Intel Flash memory products;
 2. Install, use, reproduce and distribute Derived Object Code 
    internally, only for Your own development and maintenance purposes;
 3. Allow authorized contractors ("Subcontractors") engaged by You for 
    the sole purpose of product development work to have access to the 
    Software and any modified Source Code solely for that purpose.  
    Subcontractors do NOT acquire any of Your rights to the Software or 
    any modified Source Code provided in this Agreement;
 4. Distribute Derived Object Code externally to Your bona fide customers 
    ("Customers"), provided that You may not distribute Derived Object 
    Code for use with flash products other than Intel Flash memory 
    products;  and
 5. Copy the Software for Your support, backup or archival purposes.

RESTRICTIONS:

YOU ARE NOT ALLOWED TO: 
 1. Use, copy, modify, rent, sell, license, transfer, disclose or 
    distribute the Software, in whole or in part, except as provided for 
    in this Agreement;
 2. Remove or modify the "Compatibility" module, if any, in the Software 
    or in any Derived Object Code;
 3. Decompile or reverse engineer any Software delivered in object code 
    form.

THIS ROYALTY FREE LICENSE ALLOWS YOU TO USE THE SOFTWARE WITH INTEL FLASH 
PRODUCTS ONLY.  YOUR USE OF THE SOFTWARE WITH ANY OTHER FLASH PRODUCTS IS 
EXPRESSLY PROHIBITED UNLESS AND UNTIL YOU APPLY FOR, AND ARE GRANTED IN 
INTEL'S SOLE DISCRETION, A SEPARATE WRITTEN SOFTWARE LICENSE FROM INTEL 
LICENSING ANY SUCH USE

YOU MUST execute the "Compatibility" module if provided with the Software.

TRANSFER:  Except as provided above, You may not transfer or disclose the 
Software to any other party.

OWNERSHIP AND COPYRIGHT OF SOFTWARE: Title to the Software and all copies 
thereof remain with Intel.  The Software is copyrighted and is protected 
by United States and international copyright laws.  You will not remove 
the copyright notice from the Software.  You agree to prevent the 
unauthorized copying of the Software.  You are not required to provide 
Intel with a copy of any modified Source Code or Derived Object Code 
created by You. Title to modified Source Code, other than the portion(s) 
of the modified code consisting of any portion of the Software, shall 
remain with You.

Your sale or distribution of Derived Object Code is at Your own risk and 
expense.

CONFIDENTIALITY. Source Code may include trade secrets of Intel.  You will 
not disclose or otherwise make any part of Source Code (whether or not 
modified by You) available, in any form, to any person other than Your 
employees whose job performance requires such access.  You agree to 
instruct all such employees on these obligations with respect to use, 
copying, protection, and confidentiality of Source Code.  Even after this 
Agreement terminates, the obligations of this section shall remain in 
effect until the Source Code rightfully becomes publicly known.  You may 
not disclose the terms or existence of this Agreement or use Intel's name 
in any publications, advertisements, or other announcements without Intel's 
prior written consent.  You do not have any rights to use Intel's trademarks.
Any Subcontractors to whom You disclose the Source Code must sign a written 
confidentiality agreement which contains terms regarding the Software no 
less restrictive than those set forth in this Agreement.

NO WARRANTY.  INTEL MAKES NO WARRANTY OF ANY KIND REGARDING THE SOFTWARE.  
THE SOFTWARE IS PROVIDED "AS IS".  INTEL SPECIFICALLY DISCLAIMS ANY OTHER 
WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY, 
NONINFRINGEMENT OR FITNESS FOR ANY PARTICULAR PURPOSE.

LIMITATION OF LIABILITY.  INTEL SHALL NOT BE LIABLE FOR ANY INDIRECT, 
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGE, NOR ANY LOSS OF PROFITS, LOSS 
OF USE, LOSS OF DATA, INTERRUPTION OF BUSINESS, OF ANY KIND, EVEN IF ADVISED 
OF THE POSSIBILITY OF SUCH DAMAGES.

TERMINATION OF THIS LICENSE.  You may terminate this Agreement and the 
license granted herein at any time by notifying Intel in writing. Intel 
reserves the right to conduct or have conducted audits to verify Your 
compliance with this Agreement.  Intel may terminate this Agreement at any 
time if You are in breach of any of its terms and conditions.  If this 
Agreement is terminated for any reason, You will cease distribution of 
Derived Object Code and, at Intel's option and within thirty (30) days 
following termination, either return to Intel or destroy the original and 
all copies of the Software and undistributed copies of Derived Object Code, 
and certify to Intel that they have been destroyed.

U.S. GOVERNMENT RESTRICTED RIGHTS.  The Software and documentation were 
developed at private expense and are provided with "RESTRICTED RIGHTS".  
If You distribute Derived Object Code to the U.S. Government or contractor 
You must include the following legend on the distributed copy(ies):  "Use, 
duplication, and disclosure by the Government is subject to restrictions 
set forth in FAR 52.227-14, DFARS 252.227-7013 or their successors."

EXPORT LAWS.  Source Code and Derived Object Code may be controlled for 
export purposes by the U.S. Government.  You will not export, either 
directly or indirectly, any Derived Object Code without first obtaining 
any required license or other approval from the U.S. Department of 
Commerce or any other agency or department of the United States 
Government as required.

ENTIRE AGREEMENT.  This is the entire agreement between You and Intel 
relating to this subject matter, and no amendments will be effective 
unless in a writing signed by both parties.

APPLICABLE LAW. This Agreement is governed by the laws of the State of 
Delaware and the United States, including patent and copyright laws.  
Any claim arising out of this Agreement will be brought in Delaware.

AGREEMENT ACCEPTANCE AND FILE PASSWORD ACCESS:  The archive file that 
contains the code included with this license agreement is encrypted and 
password protected.  In entering the password I_AGREE and by opening the 
archive file You indicate Your acceptance of the terms of the above 
agreement.  Please see the accompanying "read me" (READxxxx.TXT) file 
for detailed instructions on how to use the password.


PRODUCT REGISTRATION

To register your product, please print out this document, fill out the 
following and return the entire document to Intel as indicated below.


Intel Flash Software_________________________________ 
                    (fill in software type, PSM, FDI, etc.)

Version___________________
       (fill in version number)


LICENSEE                

__________________________________________________       
Company Name

__________________________________________________
Printed Name
                                    
__________________________________________________
Signature
                                    
__________________________________________________
Title
                                    
__________________________________________________
Date
            
__________________________________________________
Address

__________________________________________________
City

__________________________________________________
State/province    

ZIP/postal code___________________________________ 


Country___________________________________________

EMAIL _________________________

Phone __________________________ Ext______
(Please include your area code or country/city code as 
 appropriate)

FAX   _________________________ 


 Application Details (please tell us about your product, 
 the flash use, and software  use):

 _______________________________________________________

 _______________________________________________________

 _______________________________________________________
 
  Please return COMPLETELY filled out to:

    Intel Corporation         FAX: 916-356-2803
    Intel Flash Software Marketing  
    FM3-163
    1900 Prairie City Road
    Folsom, CA 95630

    Atten: Flash S/W License

Intel reserves the right to use and/or include Your name in 
public relations activities and marketing material and may 
request You to submit endorsements for the Software.  If You 
wish to discuss participation in this program, please send a 
fax to 916-356-2803 attn: "Software Marketing" with contact 
information and an Intel representative will contact You.

Revised: 02/16/01
***************************************************************************/ 

/*### Include Files
#########################*/
#include "dav.h"
#if (DIRECT_ACCESS_VOLUME == TRUE)

/*### Local Declarations
#########################*/

/*### Global Declarations
#########################*/

/*### Local Functions
#########################*/

/* Flag to indicate the OTT table needs to be initialized. */
BOOLEAN OTT_flag = FALSE;

static BOOLEAN QualifyObjectInfo(const HDR_SearchInfo *search_info_ptr,
                                 UINT32               block_number);

/*########################################################################
  ### QualifyObjectInfo
  ###
  ### DESCRIPTION:
  ###   This function is used to determine whether an object has
  ###   some portion of itself in a block, and if that portion is
  ###   valid in order to copy.  It also determines when reclaim
  ###   is done (by the reclaim table object).
  ###
  ### PARAMETERS:
  ###   search_info_ptr  - Current object information.
  ###   block_number     - Current block under reclaim.
  ###
  ### RETURNS:
  ###   TRUE  - block is complete (nothing to copy in curr block)
  ###   FALSE - continue copying valid data and reading headers.
  ###
*/
static BOOLEAN QualifyObjectInfo(const HDR_SearchInfo *search_info_ptr,
                                 UINT32               block_number)
{
int    in_block;
UINT32  curr_obj_size;

   curr_obj_size = SearchInfo.CurrObj.ObjectSize;
   
   if ((HDR_GetAbsorbedAttr(search_info_ptr->HeaderPtr->Attr16) == 
                                                  HDR_HA_Exists) &&
                  (HDR_GetAlignmentAttr(SearchInfo.HeaderPtr->Attr16) == 
                                                       HDR_HA_AlignPage))
   {
      /* Make sure that some portion of this object is in the block. */
      ReclaimState.ObjectBaseAddr = SearchInfo.CurrObj.ObjectAddress;
      ReclaimState.ObjectEndAddr = ReclaimState.ObjectBaseAddr + 
                                                   curr_obj_size - 1;
                                    
      in_block = IsInBlock(ReclaimState.ObjectBaseAddr, 
                           ReclaimState.ObjectEndAddr, block_number);
      if (in_block == -1)
      {
         /* This object is completely before this block, thus, */
         /*  read the next object.                             */
         return FALSE;
      }
   
      /* If we have a Valid object, copy it out of the block. */
      if (HDR_GetHdrState(search_info_ptr->HeaderPtr->Attr16) == 
                                                        HDR_HA_STATE_Valid)
      {
         ReclaimState.NextState = (UINT16)RECLAIM_ST_CalcParameters;
         
         if (search_info_ptr->HeaderPtr->ObjectType == FDI_HT_ReclaimTable)
         {
            ReclaimState.NextState = (UINT16)RECLAIM_ST_ReclaimComplete;
            return TRUE;
         }
         
         /* in_block == 0 thus, Some portion of the object is */ 
         /*     in this block.                                */
         if (in_block == 1)
         {
            /* This object is completely above this block number, thus,   */
            /*  move on to the next block, but don't read the next object */
            /*  when the block that this object is in gets there.         */
            return TRUE;
         }
      }
      else
      {
         ReclaimState.NextState = (UINT16)RECLAIM_ST_ProcessInvalidObj;
      }
   }
   
   return FALSE;
}

/*### Global Functions
#########################*/


/*########################################################################
  ### RECPAGE_InitOTTTable
  ###
  ### DESCRIPTION:
  ###   This function simply marks the OTT table as complete.
  ###
  ### PARAMETERS:
  ###   none.
  ###  
  ### RETURNS:
  ###   ERR_NONE  - When operation is successful.
  ###
*/
ERR_CODE RECPAGE_InitOTTTable(BOOLEAN restart)
{
ERR_CODE status = ERR_NONE;

   /* At present there is no initialization of the actual OTT */
   /*  table for page reclaim.  This is a place holder in the     */
   /*  event that it changes.                                     */
   
   /* Tell Recovery that the table is initialized */
   /*#ifdef ENABLE_RECLAIM_TESTS
      if (EVT_TestEvent(EVT_RECLAIM_StateE_SP1))
      {
         EVT_SetEnabled(EVT_RECLAIM_StateE_SP2);
      }
   #endif*/
            
   status = OTTTBL_WriteTableInfo( ReclaimState.OTTTblBaseAddr, 
              (OTTTBL_TableInfoPtr)&ReclaimState.OTTTableInfo);
   if (!status)
   {
      status = OTTTBL_MarkTableComplete(ReclaimState.OTTTblHdrAddr, 
                                ReclaimState.OTTTblBaseAddr, TRUE, restart);
   }

   return status;
}


/*########################################################################
  ### RECPAGE_InitReclaimTable
  ###
  ### DESCRIPTION:
  ###   This function simply marks the reclaim table as complete.
  ###
  ### PARAMETERS:
  ###   none.
  ###  
  ### RETURNS:
  ###   ERR_NONE  - When operation is successful.
  ###
*/
ERR_CODE RECPAGE_InitReclaimTable(BOOLEAN restart)
{
ERR_CODE status = ERR_NONE;

   /* At present there is no initialization of the actual reclaim */
   /*  table for page reclaim.  This is a place holder in the     */
   /*  event that it changes.                                     */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -