Adds a subset of the terminal I/O capabilities described in the Single Unix Specification, V4.
Supports:
    Erase previous character.  Default is Backspace or ^H
    Erase line.  Default is ^U
TAB characters are supported and, by default, are rendered as 8 spaces.  They will still be read as a single TAB character.
Both Canonical and Non-Canonical modes are supported.
If a terminal device is opened with O_TTY_INIT in the mode, the device will be initialized to "sane" values for interactive use.  It will be in Canonical mode, Enter will be translated to NewLine and on output, a NewLine is translated to CRLF.  Echoing will be on, control characters are output as ^X, and TABs are expanded.
See the new <sys/termios.h> file for more information.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by:  daryl.mcdaniel@intel.com
Reviewed-by:    erik.c.bjorge@intel.com
Reviewed-by:    leroy.p.leahy@intel.com
Reviewed-by:    lee.g.rosenbaum@intel.com
Reviewed-by:    jaben.carsey@intel.com
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13989 6f19259b-4bc3-4df7-8a09-765794883524
		
	
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Utility functions for performing basic math operations constrained within a
 | 
						|
  modulus.
 | 
						|
 | 
						|
  These functions are intended to simplify small changes to a value which much
 | 
						|
  remain within a specified modulus.  Changes must be less than or equal to
 | 
						|
  the modulus specified by MaxVal.
 | 
						|
 | 
						|
  Copyright (c) 2012, Intel Corporation. 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 _MODULO_UTIL_H
 | 
						|
#define _MODULO_UTIL_H
 | 
						|
#include  <Uefi.h>
 | 
						|
#include  <sys/EfiCdefs.h>
 | 
						|
 | 
						|
__BEGIN_DECLS
 | 
						|
 | 
						|
/** Counter = (Counter + 1) % MaxVal;
 | 
						|
 | 
						|
    Counter is always expected to be LESS THAN MaxVal.
 | 
						|
        0 <= Counter < MaxVal
 | 
						|
 | 
						|
    @param[in]    Counter   The value to be incremented.
 | 
						|
    @param[in]    MaxVal    Modulus of the operation.
 | 
						|
 | 
						|
    @return   Returns the result of incrementing Counter, modulus MaxVal.
 | 
						|
              If Counter >= MaxVal, returns -1.
 | 
						|
**/
 | 
						|
INT32
 | 
						|
EFIAPI
 | 
						|
ModuloIncrement(
 | 
						|
  UINT32  Counter,
 | 
						|
  UINT32  MaxVal
 | 
						|
  );
 | 
						|
 | 
						|
/** Counter = (Counter - 1) % MaxVal;
 | 
						|
 | 
						|
    Counter is always expected to be LESS THAN MaxVal.
 | 
						|
        0 <= Counter < MaxVal
 | 
						|
 | 
						|
    @param[in]    Counter   The value to be decremented.
 | 
						|
    @param[in]    MaxVal    Modulus of the operation.
 | 
						|
 | 
						|
    @return   Returns the result of decrementing Counter, modulus MaxVal.
 | 
						|
              If Counter >= MaxVal, returns -1.
 | 
						|
**/
 | 
						|
INT32
 | 
						|
EFIAPI
 | 
						|
ModuloDecrement(
 | 
						|
  UINT32  Counter,
 | 
						|
  UINT32  MaxVal
 | 
						|
  );
 | 
						|
 | 
						|
/** Counter = (Counter + Increment) % MaxVal;
 | 
						|
 | 
						|
    @param[in]    Counter   The value to be incremented.
 | 
						|
    @param[in]    Increment The value to add to Counter.
 | 
						|
    @param[in]    MaxVal    Modulus of the operation.
 | 
						|
 | 
						|
    @return   Returns the result of adding Increment to Counter, modulus MaxVal,
 | 
						|
              or -1 if Increment is larger than MaxVal.
 | 
						|
**/
 | 
						|
INT32
 | 
						|
EFIAPI
 | 
						|
ModuloAdd (
 | 
						|
  UINT32  Counter,
 | 
						|
  UINT32  Increment,
 | 
						|
  UINT32  MaxVal
 | 
						|
  );
 | 
						|
 | 
						|
/** Increment Counter but don't increment past MaxVal.
 | 
						|
 | 
						|
    @param[in]    Counter   The value to be decremented.
 | 
						|
    @param[in]    MaxVal    The upper bound for Counter.  Counter < MaxVal.
 | 
						|
 | 
						|
    @return   Returns the result of incrementing Counter.
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
EFIAPI
 | 
						|
BoundIncrement(
 | 
						|
  UINT32  Counter,
 | 
						|
  UINT32  MaxVal
 | 
						|
  );
 | 
						|
 | 
						|
/** Decrement Counter but don't decrement past zero.
 | 
						|
 | 
						|
    @param[in]    Counter   The value to be decremented.
 | 
						|
 | 
						|
    @return   Returns the result of decrementing Counter.
 | 
						|
**/
 | 
						|
UINT32
 | 
						|
EFIAPI
 | 
						|
BoundDecrement(
 | 
						|
  UINT32  Counter
 | 
						|
  );
 | 
						|
 | 
						|
__END_DECLS
 | 
						|
#endif  /* _MODULO_UTIL_H */
 |