Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of lwip by
Diff: netif/ppp/ppp.c
- Revision:
- 4:f71f5d9d5846
- Parent:
- 0:51ac1d130fd4
- Child:
- 15:e5bb25d5506f
--- a/netif/ppp/ppp.c Fri Jun 22 13:39:39 2012 +0000 +++ b/netif/ppp/ppp.c Fri Jun 22 15:08:59 2012 +0000 @@ -249,7 +249,9 @@ /******************************/ u_long subnetMask; -static PPPControl pppControl[NUM_PPP]; /* The PPP interface control blocks. */ +static PPPControl pppControl[NUM_PPP] __attribute((section("AHBSRAM1"))); /* The PPP interface control blocks. */ + +sys_mbox_t pppMbox; //Used to signal PPP thread that a PPP session begins /* * PPP Data Link Layer "protocol" table. @@ -279,7 +281,7 @@ * Buffers for outgoing packets. This must be accessed only from the appropriate * PPP task so that it doesn't need to be protected to avoid collisions. */ -u_char outpacket_buf[NUM_PPP][PPP_MRU+PPP_HDRLEN]; +u_char outpacket_buf[NUM_PPP][PPP_MRU+PPP_HDRLEN] __attribute((section("AHBSRAM1"))); /*****************************/ @@ -448,6 +450,9 @@ (*protp->init)(i); } } + + sys_mbox_new(&pppMbox, 1); + sys_thread_new(PPP_THREAD_NAME, pppInputThread, (void*)NULL, PPP_THREAD_STACKSIZE, PPP_THREAD_PRIO); //Create PPP thread here } void @@ -573,7 +578,7 @@ PPPDEBUG(LOG_INFO, ("pppOverSerialOpen: unit %d: Connecting\n", pd)); pppStart(pd); #if PPP_INPROC_OWNTHREAD - sys_thread_new(PPP_THREAD_NAME, pppInputThread, (void*)&pc->rx, PPP_THREAD_STACKSIZE, PPP_THREAD_PRIO); + sys_mbox_post(&pppMbox, (void*)&pc->rx); #endif } @@ -1508,6 +1513,10 @@ int count; PPPControlRx *pcrx = arg; + do + { + sys_arch_mbox_fetch(&pppMbox, (void**)&pcrx, 0); //Wait indefinitely + while (lcp_phase[pcrx->pd] != PHASE_DEAD) { count = sio_read(pcrx->fd, pcrx->rxbuf, PPPOS_RX_BUFSIZE); if(count > 0) { @@ -1517,6 +1526,7 @@ sys_msleep(1); } } + } while(1); //Never terminates } #endif /* PPPOS_SUPPORT && PPP_INPROC_OWNTHREAD */