⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 allocrb.c

📁 用C++写的RS232串口异步通讯功能模块
💻 C
字号:

/*
    ALLOCRB.C -- source file of code to allocate ring buffers and initialize
     the required port structure members for MCOMM5 async routines.

    Mike Dumdei, 6 Holly Lane, Texarkana TX 75503  (c) 1989
*/

#if defined(__TURBOC__)
    #include <alloc.h>
    #define _fmalloc farmalloc
#elif defined(__ZTC__)
    #include <dos.h>
    #include <stdlib.h>
    #define _fmalloc farmalloc
#else
    #include <malloc.h>
#endif
#include <comm.h>

int AllocRingBuffer(
 ASYNC *port,                                 /* pointer to port structure */
 int rxsize,                     /* number bytes to use for receive buffer */
 int txsize,                    /* number bytes to use for transmit buffer */
 int useFARmem)                   /* flag set if using FAR mem for buffers */
{
    unsigned long memptr;
    int memsize;

    memsize = rxsize + txsize;

    if (useFARmem || sizeof(char *) == 4)              /* if FAR Ring bufs */
        memptr = (unsigned long)_fmalloc(memsize);
    else                                /* if Ring buffers use NEAR memory */
        memptr = (unsigned long)(unsigned int)malloc(memsize);

     /* pre-initialize 4 required structure members */
    port->RxSize = rxsize;                          /* receive buffer size */
    port->TxSize = txsize;                         /* transmit buffer size */
    port->RingSeg = (int)(memptr >> 16);                        /* SEG adr */
    port->RingOfst = (int)memptr;                          /* OFST address */
    if (memptr == 0L)
        return 0;                       /* return 0 if no memory available */
    return 1;                                 /* return 1, had some memory */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -