Skip to content
Snippets Groups Projects
Commit 94f3f4ad authored by rswindell's avatar rswindell
Browse files

Make output buffer length configurable (from 1K-64KB).

Increase default output buffer length from 4K to 8K.
-2 and -4 cmdline options set max (instead of initial) block len.
parent b4863c7a
No related branches found
No related tags found
No related merge requests found
...@@ -72,7 +72,8 @@ ...@@ -72,7 +72,8 @@
#include "sexyz.h" #include "sexyz.h"
#define SINGLE_THREADED FALSE #define SINGLE_THREADED FALSE
#define IO_THREAD_BUF_SIZE 4096 #define MIN_OUTBUF_SIZE 1024
#define MAX_OUTBUF_SIZE (64*1024)
/***************/ /***************/
/* Global Vars */ /* Global Vars */
...@@ -117,6 +118,7 @@ RingBuf outbuf; ...@@ -117,6 +118,7 @@ RingBuf outbuf;
xpevent_t outbuf_empty; xpevent_t outbuf_empty;
#endif #endif
unsigned outbuf_drain_timeout; unsigned outbuf_drain_timeout;
long outbuf_size;
unsigned flows=0; unsigned flows=0;
unsigned select_errors=0; unsigned select_errors=0;
...@@ -485,7 +487,7 @@ int send_byte(void* unused, uchar ch, unsigned timeout) ...@@ -485,7 +487,7 @@ int send_byte(void* unused, uchar ch, unsigned timeout)
static void output_thread(void* arg) static void output_thread(void* arg)
{ {
char stats[128]; char stats[128];
BYTE buf[IO_THREAD_BUF_SIZE]; BYTE buf[MAX_OUTBUF_SIZE];
int i; int i;
ulong avail; ulong avail;
ulong total_sent=0; ulong total_sent=0;
...@@ -1229,8 +1231,8 @@ static const char* usage= ...@@ -1229,8 +1231,8 @@ static const char* usage=
"opts = -y to overwrite files when receiving\n" "opts = -y to overwrite files when receiving\n"
" -o disable Zmodem CRC-32 mode (use CRC-16)\n" " -o disable Zmodem CRC-32 mode (use CRC-16)\n"
" -s disable Zmodem streaming (Slow Zmodem)\n" " -s disable Zmodem streaming (Slow Zmodem)\n"
" -2 set initial Zmodem block size to 2K\n" " -2 set maximum Zmodem block size to 2K\n"
" -4 set initial Zmodem block size to 4K\n" " -4 set maximum Zmodem block size to 4K\n"
" -8 set maximum Zmodem block size to 8K (ZedZap)\n" " -8 set maximum Zmodem block size to 8K (ZedZap)\n"
" -! to pause after abnormal exit (error)\n" " -! to pause after abnormal exit (error)\n"
" -telnet to enable Telnet mode (the default)\n" " -telnet to enable Telnet mode (the default)\n"
...@@ -1285,8 +1287,6 @@ int main(int argc, char **argv) ...@@ -1285,8 +1287,6 @@ int main(int argc, char **argv)
,PLATFORM_DESC ,PLATFORM_DESC
); );
RingBufInit(&outbuf, IO_THREAD_BUF_SIZE);
xmodem_init(&xm,NULL,&mode,lputs,xmodem_progress,send_byte,recv_byte,is_connected); xmodem_init(&xm,NULL,&mode,lputs,xmodem_progress,send_byte,recv_byte,is_connected);
zmodem_init(&zm,NULL,lputs,zmodem_progress,send_byte,recv_byte,is_connected,data_waiting); zmodem_init(&zm,NULL,lputs,zmodem_progress,send_byte,recv_byte,is_connected,data_waiting);
...@@ -1319,6 +1319,7 @@ int main(int argc, char **argv) ...@@ -1319,6 +1319,7 @@ int main(int argc, char **argv)
outbuf.highwater_mark =iniReadInteger(fp,ROOT_SECTION,"OutbufHighwaterMark",1100); outbuf.highwater_mark =iniReadInteger(fp,ROOT_SECTION,"OutbufHighwaterMark",1100);
outbuf_drain_timeout =iniReadInteger(fp,ROOT_SECTION,"OutbufDrainTimeout",10); outbuf_drain_timeout =iniReadInteger(fp,ROOT_SECTION,"OutbufDrainTimeout",10);
outbuf_size =iniReadInteger(fp,ROOT_SECTION,"OutbufSize",8192);
progress_interval =iniReadInteger(fp,ROOT_SECTION,"ProgressInterval",1); progress_interval =iniReadInteger(fp,ROOT_SECTION,"ProgressInterval",1);
...@@ -1345,6 +1346,14 @@ int main(int argc, char **argv) ...@@ -1345,6 +1346,14 @@ int main(int argc, char **argv)
atexit(exiting); atexit(exiting);
if(outbuf_size < MIN_OUTBUF_SIZE)
outbuf_size = MIN_OUTBUF_SIZE;
else if(outbuf_size > MAX_OUTBUF_SIZE)
outbuf_size = MAX_OUTBUF_SIZE;
fprintf(statfp,"Output buffer size: %u\n", outbuf_size);
RingBufInit(&outbuf, outbuf_size);
#if !defined(RINGBUF_EVENT) #if !defined(RINGBUF_EVENT)
outbuf_empty=CreateEvent(NULL,/* ManualReset */TRUE, /*InitialState */TRUE,NULL); outbuf_empty=CreateEvent(NULL,/* ManualReset */TRUE, /*InitialState */TRUE,NULL);
#endif #endif
...@@ -1443,10 +1452,10 @@ int main(int argc, char **argv) ...@@ -1443,10 +1452,10 @@ int main(int argc, char **argv)
mode|=CRC; mode|=CRC;
break; break;
case '2': case '2':
zm.block_size=2048; zm.max_block_size=2048;
break; break;
case '4': case '4':
zm.block_size=4096; zm.max_block_size=4096;
break; break;
case '8': /* ZedZap */ case '8': /* ZedZap */
zm.max_block_size=8192; zm.max_block_size=8192;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment