[X] The "/openauto/openauto_v1.6.1/openauto_full_v1.6.1.tar.gz" file could not be found or is not available. Please select another file.

Liquorice is a multithreaded SASOS for use in embedded systems (8 bit and up). Includes a small but working IP/ARP/ICMP/UDP/TCP stack with SLIP, PPP and Ethernet support.


http://liquorice.sourceforge.net





Separate each tag with a space.

Release Date:

2000-10-18

Topic:

Operating System:

License:

Translations:

Intended Audience:

Programming Language:

Registered:

2000-03-23

Ratings and Reviews

  • Thumbs up:

    1
  • Thumbs down:

    0
100% of 1 user recommends this project

Be the first to post a text review of Liquorice. Rate and review a project by clicking thumbs up or thumbs down in the right column.

View all reviews

Project Feed

  • File released: /liquorice/snapshot 20001018a/liquorice-20001018a.tar.gz

    posted 3366 days ago

  • liquorice snapshot 20001018a file released: liquorice-20001018a.tar.gz

    Allow TCP services to reject connections as well as accepting them. <p> Fixed a couple of problems in the SMC91C96 Ethernet driver. <p> Started to implement PPP (point-to-point protocol) support. Initially this is limited to purely asynchronous channels, bound to UARTs. <p> Fixed a minor bug in the (idle) thread code for freeing up space after a thread exits. <p> Reworked some of the debug handling to make all of the debug related code disappear if a non-debug version is built. <p> Realized that I need to protect downcalls as much as upcalls (between client and server objects) so added reference count protection. <p> Modified the TCP behaviour to use the PSH flag when sending data segments. This ensures that Windows NT will not decide to wait up to 20 seconds (measured in a real application) before delivering data to an application. <p> Changed the software license from LGPL to GPL with an exception clause to allow linking with non-GPL'd code.

    posted 3367 days ago

  • File released: /liquorice/snapshot 20000927a/liquorice-20000927a.tar.gz

    posted 3387 days ago

  • liquorice snapshot 20000927a file released: liquorice-20000927a.tar.gz

    Modified the i386 bootstrapping code to switch away from as86/ld86 and instead use ".code16" support under GNU as/ld. This reduces the number of tools required to build the code. <p> Moved the membuf support into the common library area. Found and fixed some incorrect function calls in the netbuf code. <p> Wrote a (somewhat crude) NS16550A UART driver for the i386 port. <p> Ported the IP networking stack to the i386. Found a minor problem with the context library sleep code whilst doing this and fixed it. Also found and fixed a bug in the "protocol not available reporting". <p> Found that the i386 port didn't enable the A20 gate line at initialization causing aparently random crashes when accessing memory about 1 MByte - fixed this, and also enabled NMIs for detecting memory problems (parity or ECC if used). <p> Found a general problem in all of the Ethernet packet drivers where a failed receive could crash the i386 or do random strange things with the AVR. Fixed it - simple code re-ordering! <p> Completely overhauled the NE2000 driver - it was missing a lot of things that were essential if it was to be used on busy networks :-( For now though, the new version is only available for the i386 until I can test it with an AVR. <p> Fixed a problem with the TCP implementation that would cause it to block - this was a throwback to an earlier design that assumed that all segments were sent from a different thread to the device driver's receive thread. <p> Tidied up some of the makefiles to get them to build targets correctly first time. <p> Continued to move general network services into the shared support libraries rather than containing them within the test-specific frameworks. <p> Added an Intel EtherExpress Pro/10+ Ethernet driver to the i386 port.

    posted 3388 days ago

  • File released: /liquorice/snapshot 20000919a/liquorice-20000919.tar.gz

    posted 3395 days ago

  • liquorice snapshot 20000919a file released: liquorice-20000919.tar.gz

    Went through all of the dynamically bound upcalls and ensured that they protect the called object by refing and derefing. <p> Modified the "stack blown" checks to allow a variable guard-band to be specified instead of being fixed at 0x20. <p> Implemented an initial i386 port. Found and resolved several more porting bugs in the original code. Also tracked down an instance of NULL pointer dereferencing and fixed it. <p> Added a copy of the GPL to the copyright documentation to cover some GPL-derived code that is used in the i386 build tools. Note: none of this code is linked with a running Liquorice environment so it has no impact on the use of the software in commercial systems (it's equivalent to using GCC to compile the code). <p> Reworked the way in which contexts are initialized. Moved the functionality into the context library rather than being part of the "entry.S" files. Makes context startup quicker, and potentially consumes less space. <p> Fixed the problem with freeing memory back to the heap when a thread exits. <p> Minor tweak to use "noreturn" attributes on certain functions such as "context_exit()". <p> Simplified the initialization of the idle thread so that it is now picked up from the same memory that is initially used for the stack. More specifically also made this area of RAM dynamically selected at run-time. <p> Modified the test2 thread within the ATMega103 test framework to operate synchronously rather than via a thread. This saves both time and code space.

    posted 3396 days ago

  • File released: /liquorice/snapshot 20000908a/liquorice-20000908a.tar.gz

    posted 3406 days ago

  • liquorice snapshot 20000908a file released: liquorice-20000908a.tar.gz

    Fixed a small memory leak in the ICMP client support code. <p> Simplified little bits of the code - common fragments moved to inlined functions, etc. <p> Fixed a problem with ARP responses - I suspect I broke this when I modularized the code. <p> Went around all of the interrupt code and tidied up the use of interrupt disabling and enabling. <p> Split out the core "context" details from the thread implementation. This provides the basic multiple contexts-with-priority concept without requiring unecessary kernel abstractions (e.g. heap management, policy-based scheduling). <p> Fixed a problem with reference counting and one-shot callback functions checking within the TCP code. This was stopping retransmissions from working. <p> Realized that I was running the timer ticks the wrong way, and that CT0 counts up, not down (the clock was running too fast). <p> Modified all of the code that previously protected data structures with "isr mutexing" to use explicit locks. The code will compile down to the same level of efficiency when built in its optimized form, but has better debugging characteristics otherwise. It also starts to make it safe for SMP use. <p> Eliminated all "sleep" and "wakeup" primitives in favour of a basic set of context-related functions. Quite a simplification as all of the others our now built from the new code. <p> Re-engineered the project directory structures to make it easier to support micros other than the ATMega103, and to support multiple application or test programs. Implemented support for the AT90S8515 as a proof-of-concept. <p> Added a new counting-semaphore library. This is a proof-of-concept for the basic sleeping primitives and shows how to use them in ways that differ from condition variables. <p> Added a new reader/writer lock library. <p> Minor simplification in register window selection in the 3c509 driver. <p> Reworked some of the "class" handling in the network code. Eliminated some of the previous pointer arithmetic in order to use less space and get better speed. <p> Modified some of the Ethernet-support objects to avoid having to reference MAC addresses directly, and instead use a method interface. This allows additional layers to be added to the software in the future (e.g. packet filters). <p> Tidied up a mistake in the TCP socket initialization. <p> Completely reworked the concept behind TCP passive (listening) socket handling. The result is smaller, faster and less prone to queueing problems - definitely not a BSD sockets interface anymore though! <p> Radically reworked the TCP service test examples to use the new socket API - eliminated the per-service threads as they're not required any more (big saving)! <p> Reworked the heap initialization code to make it easy for an application to specify the location of heap RAM regions. Found and fixed a bug in heap_free() at the same time! <p> Renamed the spinlock functions to avoid any possible confusion with other types of lock exist or may be developed.

    posted 3407 days ago

  • File released: /liquorice/snapshot 20000827a/liquorice-20000827a.tar.gz

    posted 3418 days ago

  • liquorice snapshot 20000827a file released: liquorice-20000827a.tar.gz

    Reworked the handling of netbufs to make the different protocol layers use membufs instead of heap allocations. <p> Modified the retransmission handling in the TCP to clone the netbuf that will be resent rather than relying on internal reference counting. This allows quite a significant simplification in other parts of the code. <p> Simplified the internals of membufs - I'd made a flawed assumption about how internal references needed to be handled. <p> Removed some (now) unecessary netbuf locking (it was always a bit of a hack at best). <p> Eliminated the "arp.c" and "arp.h" files as they're not as generally useful as I'd first thought they would be. <p> Reworked the main source "Makefile" to build the majority of the code as a library and then link it, rather than just linking the individual source files. This ensures that any unused library code (built from unreferenced source files) is not linked (makes the ELF file smaller). <p> Simplified the IP stack by removing the IP receive queue management thread. This wasted space and slowed thing down. It was originally provided to serve a purpose that is now handled with better lock priority handling. <p> Fixed a race condition in the TCP delayed ACK handling. I don't think I've seen it happen, but there was a small chance that it would occur. <p> Reworked a lot of previously static inter-module binding in favour of dynamic binding (sounds trivial doesn't it :-)). <p> Fixed a bug in the ARP response handling. The code used to respond with its own details to any ARP request :-( <p> Merged the ICMP and IP code together as they're effectively part of the same protocol layer (they are sublayers of layer 3 in fact). <p> Modified the notification of ICMP error messages to the appropriate transport layer in accordance with RFC1122. Also ensured that only valid ICMP request types may be hooked by a client. <p> Introduced the NE2000 Ethernet driver into the file set. <p> Provided the "ethdev" abstraction for ethernet device drivers. <p> Added abstractions for the IP datalink layer and for the IP to Ethernet layer. <p> Simplified inter-module calling to avoid any redundant parameters. <p> Eliminated all of the conditional compilation from the IP layer w.r.t datalink layers (e.g. Ethernet MAC addresses). <p> Extracted IP checksumming into a separate file. <p> TCP MSS is now reported to a remote host based on the TCP's IP's instance's MRU. <p> Now allocate a thread's stack at the same time as its data structure. Saves on heap overhead and is a bit quicker. <p> Changed the behaviour of the TCP to only send a SYN response when the server application performs its "accept" call. This allows the server to pass new client reference information to the TCP and thus allows it to avoid any race conditions where a client host could send data before the server was ready to deal with it.

    posted 3419 days ago

Rate and Review

Would you recommend this project?






<

Related Projects

Liquorice Actions

Thanks for your rating!

Would you also like to write a review?





Skip Review

Thanks for your review!

Get credit for your review by logging in via OpenID. Click your account provider:

No Thanks