亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? util.c

?? WINDOWSCE4.2 ARM PXA255 SDMMC驅動程序源代碼
?? C
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*****************************************************************************
* FileName:  UTIL.C - Contains string manipulation and byte order conversion
*
* SanDisk Host Developer's Toolkit
*
* Copyright (c) 1996-1999 SanDisk Corporation
* Copyright EBS Inc. 1996
* All rights reserved.
* This code may not be redistributed in source or linkable object form
* without the consent of its author.
*
******************************************************************************/
/* UTIL.C - Contains string manipulation and byte order conversion routines */

#include "sdapi.h"



/*****************************************************************************
* Name: COPYBUFF  - Copy one buffer to another
*
* Description
*       Essentially memcpy. Copy number of BYTES from source to target
*       buffer.
*
* Entries:
*       SDVOID *vto       Target buffer
*       SDVOID *vfrom     Source buffer
*       INT16 size      Number of bytes to copy
*
*Returns
*        None
*
******************************************************************************/
#ifndef copybuff                /* might be using memcpy */
SDVOID copybuff(SDVOID *vto, SDVOID *vfrom, INT16 size) /* __fn__*/
{
        UINT16 *to;
        UINT16 *from;
        UINT16 dsize;

        to = (UINT16 *) vto;

        if ((ULONG)to & 0x01)
        {
                for (dsize = 0; dsize < (UINT16)size; dsize++)
                        ((UCHAR *)vto)[dsize] = ((UCHAR *)vfrom)[dsize];
        }
        else
        {
                from = (UINT16 *) vfrom;

                dsize = size >> 1;

                while ( dsize-- )
                        *to++ = *from++;

#if (UTEXT_SIZE)
                if (size & 1)
                {
                        dsize = *to;
                        *to = *from;
#if (LITTLE_ENDIAN)
                        *to &= 0x00FF;  /* keep low byte */
                        dsize &= 0xFF00;
#else
                        *to &= 0xFF00;  /* keep high byte */
                        dsize &= 0x00FF;
#endif
                        *to |= dsize;
                }
#else
                if (size & 1)
                        *((UCHAR *)to) = *((UCHAR *)from);
#endif
        }
}
#endif


/*****************************************************************************
* Name: COMPBUFF  - Compare two buffers
*
* Description
*       Compare n characters of Source and Target string buffers.
*
* Entries:
*       SDVOID *vfrom     Source buffer
*       SDVOID *vto       Target buffer
*       INT16 size        Number of bytes to compare
*
* Returns
*       -1      Source < Target
*        0      Source = Target
*       +1      Source > Target
*
******************************************************************************/
#ifndef compbuff                /* might be using memcmp */
INT16 compbuff(SDVOID *vfrom, SDVOID *vto, INT16 size) /* __fn__*/
{
        UCHAR *str1 = (UCHAR *) vfrom;
        UCHAR *str2 = (UCHAR *) vto;

        while ( size-- )
        {
                if ( *str1 < *str2 )
                        return -1;
                if ( *str1 > *str2 )
                        return  1;
                str1++;
                str2++;
        }

        return 0;
}
#endif



/*****************************************************************************
* Name: PC_MEMFILL  - Fill a buffer with a character
*
* Description
*        Fill the target buffer with size instances of c
*
* Entries:
*       SDVOID *vto       Target buffer
*       INT16 size      Number of bytes to do
*       UTINY c         Value to be filled
*
* Returns:
*        None
*
******************************************************************************/
#ifndef pc_memfill              /* might be using memfill */
SDVOID pc_memfill(SDVOID *vto, INT16 size, UTINY c) /* __fn__*/
{
        UINT16 dsize;

#if (UTEXT_SIZE)
        UINT16 *to = (UINT16 *) vto;

        dsize = size >> 1;
#else
        UCHAR *to = (UCHAR *) vto;

        dsize = size;
#endif

        while ( dsize-- )
                *to++ = c;
}
#endif


UINT16 swap_hi_low_byte (UINT16 inword)
{
        UINT16 tmpWord;

        tmpWord = inword;
        inword <<= 8;
        tmpWord = (tmpWord >> 8) | inword;

        return (tmpWord);
}


/*****************************************************************************
* Name: pc_strcat - strcat
*
* Description
*       Essential strcat function. Copy one buffer to another.  The source
*       buffer must be ended with a NULL.
*
* Entries:
*       TEXT *to        Target buffer
*       TEXT *from      Source buffer
*
* Returns
*        Nothing
*
******************************************************************************/
#ifndef pc_strcat               /* might be using strcat */
SDVOID pc_strcat(TEXT *to, TEXT *from) /* __fn__*/
{
        while ( *to )
                to++;

        while ( *from )
                *to++ = *from++;
        *to = 0;
}
#endif



/*****************************************************************************
PC_CNVRT -  Convert intel byte order to native byte order.


Summary

    ULONG to_DWORD (from)  Convert intel style 32 bit to native 32 bit
        UTINY *from;

    UINT16 to_WORD (from)  Convert intel style 16 bit to native 16 bit
        UTINY *from;

    SDVOID fr_WORD (to,from) Convert native 16 bit to 16 bit intel
        UTINY *to;
        UCOUNT from;

    SDVOID fr_DWORD (to,from) Convert native 32 bit to 32 bit intel
        UTINY *to;
        ULONG from;

 Description
    This code is known to work on 68K and 808x machines. It has been left
    as generic as possible. You may wish to hardwire it for your CPU/Code
    generator to shave off a few bytes and microseconds, be careful though
    the addresses are not guaranteed to be word aligned in fact to_WORD AND
    fr_WORD's arguments are definately NOT word alligned when working on odd
    number indeces in 12 bit fats. (see pc_faxx and pc_pfaxx().

    Note: Optimize at your own peril, and after everything else is debugged.

    Bit shift operators are used to convert intel ordered storage
    to native. The host byte ordering should not matter.

Returns

Example:
    See other sources.

******************************************************************************/


/******************************************************************************
* Name: to_DWORD - Convert to 32-bit portable data
*
* Description
*       Convert a 32 bit intel item to a portable 32 bit data.
*
* Entries:
*       UTINY *from     Source buffer data
*
* Returns:
*       32-bit data
*
******************************************************************************/
ULONG to_DWORD ( UCHAR *from ) /*__fn__*/
{
        ULONG res;
#if (LITTLE_ENDIAN)
        res = ((ULONG) *((ULONG *)from));
#else
        ULONG t;
        t = ((ULONG) *(from + 3)) & 0x00FF;
        res = (t << 24);
        t = ((ULONG) *(from + 2)) & 0x00FF;
        res |= (t << 16);
        t = ((ULONG) *(from + 1)) & 0x00FF;
        res |= (t << 8);
        t = ((ULONG) *from) & 0x00FF;
        res |= t;
#endif
        return (res);
}


/******************************************************************************
* Name: to_WORD - Covert to a portable 16-bit data
*
* Description
*       Convert a 16 bit intel item to a portable 16 bit.
*
* Entries:
*       UTINY *from     Source buffer data
*
* Returns:
*        16-bit data
*
******************************************************************************/
UINT16 to_WORD ( UCHAR *from ) /*__fn__*/
{
        UINT16 nres;

#if (LITTLE_ENDIAN)
        nres = ((UINT16) *((UINT16 *)from));
#else
        UINT16 t;
        t = (UINT16) (((UINT16) *(from + 1)) & 0x00FF);
        nres = (UINT16) (t << 8);
        t = (UINT16) (((UINT16) *from) & 0x00FF);
        nres |= t;
#endif
    return (nres);
}


#if (RTFS_WRITE)
/******************************************************************************
* Name:  fr_WORD  - Convert to 16-bit INTEL format
*
* Description
*        Convert a portable 16-bit to a 16-bit intel item.
*
* Entries:
*       UTINY *to       Target buffer      
*       UINT16 from     Source data
*
* Returns:
*        Nothing
*
******************************************************************************/
SDVOID fr_WORD ( UCHAR *to, UINT16 from ) /*__fn__*/
{
#if (LITTLE_ENDIAN)
        *((UINT16 *)to) = from;
#else
        UINT16 *tptr;
        UINT16 t1, t2;


        tptr = (UINT16 *)to;

        if ( (ULONG)tptr & 0x01 )
        {
                t1  =  (from & 0xFF);
                t2  =  (from & 0xFF00);

                tptr = (UINT16 *)(to-1);
                *tptr &= 0xFF00;
                *tptr |= t1;
                tptr++;
                *tptr &= 0x00FF;
                *tptr |= t2;
        }
        else
        {
                t1  =   (from << 8);
                t2  =  ((from >> 8) & 0x00FF);
                *tptr = (t1 | t2);
        }
#endif
}

/******************************************************************************
* Name:  fr_DWORD  - Convert to 32-bit INTEL format
*
* Description
*        Convert a portable 32 bit to a 32 bit intel item.
*
* Entries:
*       UTINY *to       Target buffer
*       ULONG from      Source data
*
* Returns:
*        None
*
******************************************************************************/
SDVOID fr_DWORD ( UCHAR *to, UINT32 from ) /*__fn__*/
{
#if (LITTLE_ENDIAN)
        *((UINT32 *)to) = from;
#else
        UINT16 tt;

        tt = (UINT16)(from & 0xFFFF);
        fr_WORD((UCHAR *)&to[0], tt);

        tt = (UINT16)(from >> 16);
        fr_WORD((UCHAR *)&to[2], tt);

#endif
}
#endif  /* (RTFS_WRITE) */


#if (CHAR_16BIT)

/******************************************************************************
* Name: b_unpack
*
* Description
*       Convert a byte data buffer to a portable word data buffer with
*       leading bytes as 0x00.
*
* Entries:
*       UINT16 *from    Source data buffer
*       UTINY  *to      Target data buffer 
*       UINT16 length   Length of string to convert
*       UINT16 offset   Byte offset of target data buffer 
*
* Returns:
*        16-bit target data buffer with leading upper bytes as 0x00.
*
******************************************************************************/
SDVOID b_unpack(UTINY *to, UINT16 *from, UINT16 length, UINT16 offset) /*__fn__*/
{
        UINT16 i, woffset = (offset >> 1);

        for (i = 0; i < length; i++, offset++)
    {
#if (LITTLE_ENDIAN)
                if ( offset & 1 )
        {
            to[i] = (UTINY)(from[woffset] >> 8);
            woffset++;
        }
        else
                        to[i] = (UTINY)(from[woffset] & 0x00FF);
#else
                if ( offset & 1 )
        {
                        to[i] = (UTINY)(from[woffset] & 0x00FF);
            woffset++;
        }
        else
            to[i] = (UTINY)(from[woffset] >> 8);
#endif
    }
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线欧美日韩精品| 欧美色区777第一页| 亚洲综合无码一区二区| 欧美一区二区三区性视频| 99久久国产免费看| 国产精品一二三区| 日韩vs国产vs欧美| 亚洲猫色日本管| 国产日韩欧美不卡| 日韩免费成人网| 欧美日韩一级二级| 91伊人久久大香线蕉| 国产老妇另类xxxxx| 日韩国产精品91| 夜夜操天天操亚洲| 亚洲图片另类小说| 欧美国产禁国产网站cc| 26uuu精品一区二区在线观看| 欧美性高清videossexo| 99久久精品免费精品国产| 国产又黄又大久久| 毛片一区二区三区| 婷婷综合在线观看| 亚洲一区在线免费观看| 亚洲激情在线播放| 亚洲图片另类小说| 自拍偷自拍亚洲精品播放| 日本一区二区三区视频视频| 久久久国产精品麻豆| 日韩美女视频在线| 日韩午夜在线观看视频| 91精品国产综合久久小美女| 欧美日韩一区精品| 欧美日韩国产区一| 在线观看免费亚洲| 欧美制服丝袜第一页| 在线免费观看视频一区| 欧美怡红院视频| 欧美日韩一二三区| 91精品一区二区三区在线观看| 欧美日韩一区二区欧美激情| 欧美日高清视频| 欧美久久久久久久久| 欧美精品久久天天躁| 欧美日韩国产免费一区二区 | 2020国产精品| 久久久夜色精品亚洲| 久久你懂得1024| 亚洲国产经典视频| 日韩美女视频19| 亚洲国产一区二区三区青草影视| 午夜精品久久久久久久蜜桃app| 午夜久久电影网| 精品制服美女丁香| 国产精品亚洲一区二区三区妖精 | 美女国产一区二区三区| 麻豆91在线播放免费| 国产精品亚洲综合一区在线观看| 国产成人精品免费网站| 一本大道久久a久久综合婷婷| 91精品福利视频| 欧美一区2区视频在线观看| 精品乱码亚洲一区二区不卡| 国产精品免费视频网站| 亚洲午夜久久久久久久久电影院| 日韩国产在线一| 国产乱码字幕精品高清av| 91最新地址在线播放| 8x8x8国产精品| 欧美精彩视频一区二区三区| 亚洲精品高清视频在线观看| 毛片av中文字幕一区二区| 高清成人免费视频| 欧美伊人精品成人久久综合97 | 日韩免费高清视频| 国产精品久久久久久久裸模| 亚洲成精国产精品女| 蜜臀av性久久久久av蜜臀妖精| 国产精品77777竹菊影视小说| 在线视频一区二区三区| 精品精品国产高清a毛片牛牛| 国产精品久久久久久久久快鸭 | 不卡av免费在线观看| 欧美日本一道本在线视频| 久久精品视频免费| 午夜在线电影亚洲一区| 国产一区二区三区在线观看精品 | 在线观看一区不卡| 国产美女精品在线| 97久久精品人人做人人爽50路| 91福利国产成人精品照片| 成人国产精品免费观看动漫| 日韩影院精彩在线| 亚洲一区二区三区影院| 国产精品99久久久久久似苏梦涵| 欧美中文字幕一区二区三区亚洲| 欧美精品一区二| 亚洲午夜电影在线观看| 国产一区不卡视频| 日韩一区二区麻豆国产| 亚洲欧美日韩中文字幕一区二区三区 | 日韩精品亚洲一区二区三区免费| 成人午夜视频免费看| 欧美一区二区女人| 一区二区欧美精品| 成人av电影免费观看| 26uuu久久天堂性欧美| 日本午夜一本久久久综合| 色综合久久综合网| 国产精品污www在线观看| 男男成人高潮片免费网站| 91国偷自产一区二区开放时间 | 国产三级精品视频| 蜜桃视频在线观看一区| 欧美性大战久久| 亚洲综合视频在线| 不卡的av在线播放| 日本一道高清亚洲日美韩| 欧美在线观看一区| 最新中文字幕一区二区三区| 国产成人在线网站| 久久久久久免费| 国产精品一区二区久久精品爱涩| 91精品国产丝袜白色高跟鞋| 亚洲国产精品视频| 在线一区二区视频| 一区二区成人在线视频| 99久久夜色精品国产网站| 国产欧美日韩另类视频免费观看| 精品一区二区免费| 欧美mv日韩mv国产| 久久99精品国产麻豆婷婷洗澡| 欧美一区二区精美| 久久草av在线| 欧美mv日韩mv| 韩国女主播一区二区三区| 欧美va在线播放| 国产麻豆91精品| 国产精品天美传媒| 99在线精品观看| 亚洲精品少妇30p| 91成人免费网站| 香蕉影视欧美成人| 欧美一区二区三区在线看| 蜜桃免费网站一区二区三区| 日韩一区二区影院| 国内精品伊人久久久久av一坑 | 丝袜脚交一区二区| 欧美精品第1页| 麻豆国产欧美一区二区三区| 欧美大片免费久久精品三p| 国产乱子伦视频一区二区三区| 久久日一线二线三线suv| 国产成人av一区| 中文字幕日韩欧美一区二区三区| 99久久99久久久精品齐齐| 亚洲国产精品嫩草影院| 日韩片之四级片| 国产91精品久久久久久久网曝门| 中文字幕免费一区| 欧美视频完全免费看| 美国欧美日韩国产在线播放| 久久九九久精品国产免费直播| caoporn国产一区二区| 亚洲一区二区精品视频| 亚洲精品一区二区三区香蕉| 大胆欧美人体老妇| 亚洲国产精品视频| 久久免费精品国产久精品久久久久| voyeur盗摄精品| 日韩 欧美一区二区三区| 国产日韩精品一区| 欧美日韩中文一区| 国产大片一区二区| 午夜电影久久久| 欧美激情一区二区三区蜜桃视频| 欧美图区在线视频| 国产九色精品成人porny| 一级特黄大欧美久久久| 精品久久久久一区| 色偷偷久久一区二区三区| 美女视频黄a大片欧美| 国产精品久久看| 日韩一卡二卡三卡四卡| 99久久99久久精品国产片果冻| 免费看黄色91| 一区二区三区精品视频| 久久久久国产精品麻豆| 欧美午夜一区二区三区| 丁香婷婷综合色啪| 日本美女视频一区二区| 中文字幕一区二区三区色视频 | 成人黄色综合网站| 日韩精品成人一区二区在线| 国产精品久久久久久久第一福利 | 亚洲免费成人av| 久久久久久亚洲综合影院红桃| 欧美亚洲国产一区二区三区| 成人国产电影网| 狠狠色丁香婷婷综合|