示例#1
0
文件: AddBGRT.c 项目: MattDevo/edk2
void SetAcpiRsdp2Checksums(void* data) {
  UINT8* arr = data;
  UINTN size = *(const UINT32*)&arr[20];
  arr[9] = 0;
  arr[32] = 0;
  arr[9] = -SumBytes(arr, 20);
  arr[32] = -SumBytes(arr, size);
}
示例#2
0
文件: AddBGRT.c 项目: MattDevo/edk2
void SetAcpiSdtChecksum(void* data) {
  UINT8* arr = data;
  UINTN size = *(const UINT32*)&arr[4];
  arr[9] = 0;
  arr[9] = -SumBytes(arr, size);
}
示例#3
0
文件: AddBGRT.c 项目: MattDevo/edk2
int VerifyAcpiSdtChecksum(const void* data) {
  const UINT8* arr = data;
  UINTN size = *(const UINT32*)&arr[4];
  return SumBytes(arr, size) == 0;
}
示例#4
0
文件: AddBGRT.c 项目: MattDevo/edk2
int VerifyAcpiRsdp2Checksums(const void* data) {
  const UINT8* arr = data;
  UINTN size = *(const UINT32*)&arr[20];
  return SumBytes(arr, 20) == 0 && SumBytes(arr, size) == 0;
}
示例#5
0
int main(int argc, char *argv[])
{
	offset *lista;
	offset *distintos;
	long ne, nedis;
	double sum;
	int readOK, writeOK;

	if (argc != 3)
	{
		printf("\nUso: %s <in_offset_list> <out_distinct_offset_list>\n",argv[0]);
		printf("\nDescripción: ");
		printf("\n    Acepta una lista de offsets y devuelve la misma lista sin elementos repetidos.\n");
		printf("\nParámetros: ");
		printf("\n    - <in_offset_list> = Archivo de entrada con la lista de offsets.");
		printf("\n    - <out_offset_list> = Archivo de salida con la lista de offsets.\n\n");
		exit(1);
	}

	/* Contamos el numero de elementos de la lista para reservar memoria */
	ne = NumeroDeOffsetList(argv[1]);
	if (!ne)
	{
		printf("\nError al abrir el archivo: %s.",argv[1]);
		exit(1);
	}

	/* Reservamos memoria dinámica para los vectores de offsets */
   	lista = (offset *) malloc (ne*sizeof(offset));
   	distintos = (offset *) malloc (ne*sizeof(offset));

	/* Leemos el archivo de offsets */
	readOK = LeerOffsetList(argv[1],lista,&ne);
	if (!readOK)
	{
		printf("\nError al abrir el archivo: %s.",argv[1]);
		exit(1);
	}

	//qsort(lista, ne, sizeof(offset), &compare);

	/* Creamos una lista con los paquetes que no se repiten */
	EliminarRepetidosOne(lista,ne,distintos,&nedis);
	printf("\n# Paquetes total: %ld",ne);
	printf("\n# Paquetes distintos: %ld",nedis);
	printf("\n# Paquetes repetidos: %ld",ne-nedis);

	/* Sumamos los bytes de los paquetes distintos */
	sum = SumBytes(distintos,nedis);
	printf("\nSum (Bytes): %lf",sum);
	printf("\nSum (KBytes): %lf",sum/1024);
	printf("\nSum (MBytes): %lf\n",sum/(1024*1024));
	printf("\nBYTES: %.0lf",sum);

	/* Ordenamos la lista ascendentemente según el offset */
	OrdenarSeleccionDirecta(distintos,nedis);

	/* Guardamos la nueva lista de offset sin elementos repetidos */
	writeOK = EscribirOffsetList(argv[2],distintos,nedis);
	if (!writeOK)
	{
		printf("\nError al crear el archivo: %s.",argv[2]);
		exit(1);
	}

	return 0;
}
示例#6
0
文件: wlist.c 项目: mikemull/Chiron
/*-------------------------------------------------------------------
 *   BlockExtent             11.24.91 MM
 *
 *   Sets the range of blocks to search in the WORD structure.
 *-------------------------------------------------------------------
 */
static BOOL
BlockExtent( WORD *pattern )
{
        BOOL in_list=TRUE,single_letter=FALSE;
        char *p,ts[3];
        unsigned WVal,next_index=1;

        p = pattern->word_text->m_text;

        Debug("BlockExtent:Block = %s \n",p);

        if ( LetterVal(p[0]) )
        {
                /*
                ** Check for single letter initial strings
                */
                if(strlen(p) == 1)
                        single_letter = TRUE;
                else
                {
                        p++;
                        while( !LetterVal( *p ) && *p )
                        {
                                if( (*p == '#') || (*p == '.') )
                                {
                                        single_letter = TRUE;
                                        break;
                                }
                                p++;
                        }
                }

                if(!single_letter)
                {
                    WVal = WordVal(pattern->word_text->m_text);
                    if( (WVal>=0) && (WVal<=701) )
                    {
                        pattern->word_loc.start_wlblock = SumBytes( WVal );
                        Debug("BlockNum = %d\n",pattern->word_loc.start_wlblock);

                        /*  Determine the number of blocks to look at
                        */
                        while( !LINXbuf[WVal + next_index] )
                              next_index++;
                        pattern->word_loc.end_wlblock =
                          pattern->word_loc.start_wlblock+
                            LINXbuf[WVal+next_index];
                    }
                    else
                        in_list = FALSE;
                }
                else
                {
                    ts[0] = pattern->word_text->m_text[0];
                    ts[1] = 'A';
                    ts[2] = '\0';
                    pattern->word_loc.start_wlblock = SumBytes(WordVal( ts ));
                    ts[1] = 'W';
                    ts[2] = '\0';
                    pattern->word_loc.end_wlblock = SumBytes( WordVal( ts ) );
                }
        }
        else
        {
        /*  No letters at start of pattern
        */
                if( !( (p[0] == '#') || (p[0] == '.') ) )
                     in_list = FALSE;
                else
                {
                     if(!makeNotice("Do you REALLY want to search the whole list",
                                2,YORN))
                        in_list = FALSE;
                     else
                     {
                        pattern->word_loc.start_wlblock = 0;
                        pattern->word_loc.end_wlblock = 1203; /* PARAMETERIZE
                                                                  tHIS */
                     }

                     noticeDown();
                }
        }

        return(in_list);
}/*