MdeModulePkg: Regular expression protocol
Add driver to produce EFI_REGULAR_EXPRESSION_PROTOCOL. Based on Oniguruma v5.9.6 (BSD 2-clause license), which provides full Unicode support, and POSIX ERE and Perl regex syntaxes. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Cecil Sheng <cecil.sheng@hpe.com> Reviewed-by: Eric Dong <eric.dong@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18411 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/** @file
|
||||
|
||||
Provide intrinsics within Oniguruma
|
||||
|
||||
Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>
|
||||
|
||||
This program and the accompanying materials are licensed and made available
|
||||
under the terms and conditions of the BSD License that 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.
|
||||
**/
|
||||
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
|
||||
//
|
||||
// From CryptoPkg/IntrinsicLib
|
||||
//
|
||||
|
||||
/* Copies bytes between buffers */
|
||||
#pragma function(memcpy)
|
||||
void * memcpy (void *dest, const void *src, unsigned int count)
|
||||
{
|
||||
return CopyMem (dest, src, (UINTN)count);
|
||||
}
|
||||
|
||||
/* Sets buffers to a specified character */
|
||||
#pragma function(memset)
|
||||
void * memset (void *dest, char ch, unsigned int count)
|
||||
{
|
||||
//
|
||||
// NOTE: Here we use one base implementation for memset, instead of the direct
|
||||
// optimized SetMem() wrapper. Because the IntrinsicLib has to be built
|
||||
// without whole program optimization option, and there will be some
|
||||
// potential register usage errors when calling other optimized codes.
|
||||
//
|
||||
|
||||
//
|
||||
// Declare the local variables that actually move the data elements as
|
||||
// volatile to prevent the optimizer from replacing this function with
|
||||
// the intrinsic memset()
|
||||
//
|
||||
volatile UINT8 *Pointer;
|
||||
|
||||
Pointer = (UINT8 *)dest;
|
||||
while (count-- != 0) {
|
||||
*(Pointer++) = ch;
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
Reference in New Issue
Block a user