Add library functions to rename a file and get a temporary name for a file through the semi-hosting interface. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ronald Cron <ronald.cron@arm.com> Reviewed-By: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16238 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
  Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
 | 
						|
  Portions copyright (c) 2011, 2012, ARM Ltd. All rights reserved.<BR>
 | 
						|
 | 
						|
  This program and the accompanying materials
 | 
						|
  are licensed and made available under the terms and conditions of the BSD License
 | 
						|
  which accompanies this distribution.  The full text of the license may be found at
 | 
						|
  http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __SEMIHOSTING_H__
 | 
						|
#define __SEMIHOSTING_H__
 | 
						|
 | 
						|
/*
 | 
						|
 *
 | 
						|
 *  Please refer to ARM RVDS 3.0 Compiler and Libraries Guide for more information
 | 
						|
 *  about the semihosting interface.
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#define SEMIHOST_FILE_MODE_READ     (0 << 2)
 | 
						|
#define SEMIHOST_FILE_MODE_WRITE    (1 << 2)
 | 
						|
#define SEMIHOST_FILE_MODE_APPEND   (2 << 2)
 | 
						|
#define SEMIHOST_FILE_MODE_UPDATE   (1 << 1)
 | 
						|
#define SEMIHOST_FILE_MODE_BINARY   (1 << 0)
 | 
						|
#define SEMIHOST_FILE_MODE_ASCII    (0 << 0)
 | 
						|
 | 
						|
BOOLEAN
 | 
						|
SemihostConnectionSupported (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileOpen (
 | 
						|
  IN  CHAR8  *FileName,
 | 
						|
  IN  UINT32 Mode,
 | 
						|
  OUT UINTN  *FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileSeek (
 | 
						|
  IN UINTN  FileHandle,
 | 
						|
  IN UINTN  Offset
 | 
						|
  );
 | 
						|
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileRead (
 | 
						|
  IN     UINTN  FileHandle,
 | 
						|
  IN OUT UINTN  *Length,
 | 
						|
  OUT    VOID   *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileWrite (
 | 
						|
  IN     UINTN  FileHandle,
 | 
						|
  IN OUT UINTN  *Length,
 | 
						|
  IN     VOID   *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileClose (
 | 
						|
  IN UINTN  FileHandle
 | 
						|
  );
 | 
						|
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileLength (
 | 
						|
  IN  UINTN  FileHandle,
 | 
						|
  OUT UINTN  *Length
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Get a temporary name for a file from the host running the debug agent.
 | 
						|
 | 
						|
  @param[out]  Buffer      Pointer to the buffer where the temporary name has to
 | 
						|
                           be stored
 | 
						|
  @param[in]   Identifier  File name identifier (integer in the range 0 to 255)
 | 
						|
  @param[in]   Length      Length of the buffer to store the temporary name
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            Temporary name returned
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Invalid buffer address
 | 
						|
  @retval  RETURN_ABORTED            Temporary name not returned
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileTmpName(
 | 
						|
  OUT  VOID   *Buffer,
 | 
						|
  IN   UINT8  Identifier,
 | 
						|
  IN   UINTN  Length
 | 
						|
  );
 | 
						|
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileRemove (
 | 
						|
  IN CHAR8 *FileName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Rename a specified file.
 | 
						|
 | 
						|
  @param[in]  FileName     Name of the file to rename.
 | 
						|
  @param[in]  NewFileName  The new name of the file.
 | 
						|
 | 
						|
  @retval  RETURN_SUCCESS            File Renamed
 | 
						|
  @retval  RETURN_INVALID_PARAMETER  Either the current or the new name is not specified
 | 
						|
  @retval  RETURN_ABORTED            Rename failed
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
SemihostFileRename(
 | 
						|
  IN  CHAR8  *FileName,
 | 
						|
  IN  CHAR8  *NewFileName
 | 
						|
  );
 | 
						|
 | 
						|
CHAR8
 | 
						|
SemihostReadCharacter (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
VOID
 | 
						|
SemihostWriteCharacter (
 | 
						|
  IN CHAR8 Character
 | 
						|
  );
 | 
						|
 | 
						|
VOID
 | 
						|
SemihostWriteString (
 | 
						|
  IN CHAR8 *String
 | 
						|
  );
 | 
						|
 | 
						|
UINT32
 | 
						|
SemihostSystem (
 | 
						|
  IN CHAR8 *CommandLine
 | 
						|
  );
 | 
						|
 | 
						|
#endif // __SEMIHOSTING_H__
 |