• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    C
  • Created about 12 years ago
  • Updated about 12 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Protothreads extremely lightweight stackless threads implemented in C
Protothreads are extremely lightweight stackless threads designed for
severely memory constrained systems such as small embedded systems or
sensor network nodes. Protothreads can be used with or without an
underlying operating system.

Protothreads provides a blocking context on top of an event-driven
system, without the overhead of per-thread stacks. The purpose of
protothreads is to implement sequential flow of control without
complex state machines or full multi-threading.

Main features:

    * No machine specific code - the protothreads library is pure C
    * Does not use error-prone functions such as longjmp()
    * Very small RAM overhead - only two bytes per protothread
    * Can be used with or without an OS
    * Provides blocking wait without full multi-threading or
      stack-switching
    * Freely available under a BSD-like open source license    

Example applications:

    * Memory constrained systems
    * Event-driven protocol stacks
    * Small embedded systems
    * Sensor network nodes

The protothreads library is released under an open source BSD-style
license that allows for both non-commercial and commercial usage. The
only requirement is that credit is given.

The protothreads library was written by Adam Dunkels <[email protected]>
with support from Oliver Schmidt <[email protected]>.

More information and new versions can be found at the protothreads
homepage:
   http://dunkels.com/adam/pt/
   (was: http://www.sics.se/~adam/pt/
         http://web.archive.org/web/20110610191935/http://www.sics.se/~adam/pt/index.html)


Documentation can be found in the doc/ subdirectory.

Two example programs illustrating the use of protothreads can be found
in this directory:

   example-small.c         A small example showing how to use protothreads
   example-buffer.c        The bounded buffer problem with protothreads
   example-codelock.c      A code lock with simulated key input

To compile the examples, simply run "make".


Adam Dunkels, 3 June 2006

More Repositories

1

libumem

This is the user space slab memory allocator, umem, first available in Solaris 9.
C
81
star
2

gen_paxos

An Erlang/OTP-style implementation of the PAXOS distributed consensus protocol
Erlang
59
star
3

lmdb

An Erlang NIF for the "Lightening MDB" BTREE used in OpenLDAP
C
45
star
4

hamt

Ideal Hash Array Mapped Tries: an Erlang functional datatype
Erlang
18
star
5

isync

isync/mbsync - a mailbox synchronization program
C
16
star
6

cauchy

Cauchy-based Reed-Solomon codes
C
6
star
7

wave

Mirror of Apache Wave
Java
6
star
8

riemann-nitro

A Web Dashboard for Riemann using Nitrogen/Erlang and Comet rather than Sinatra/Ruby and Polling
JavaScript
4
star
9

sbcl

Steel Bank Common Lisp (SBCL) with LLVM compilation
Common Lisp
3
star
10

libdirectio

Disable the filesystem buffer cache by preloading this library
C
3
star
11

testregex

A regex(3) test harness created by Glenn Fowler <[email protected]> but no longer available at research.att.com
C
3
star
12

liblfds

a portable, license-free, lock-free data structure library written in C
C
2
star
13

wsim

Wooden Ships and Iron Men
Shell
2
star
14

libbtds

C
2
star
15

rbtree-c

left-leaning 2-3 red-black trees as C preprocessor macros
C
2
star
16

dbsql

A SQL database engine on top of Oracle Berkeley DB
C
2
star
17

xqd

ABANDONED:: Berkeley DB XML Daemon - A network server for Oracle Berkeley DB XML.
JavaScript
2
star
18

xv6

xv6 is a modern re-implementation of Sixth Edition Unix in ANSI C for multiprocessor x86/x86_64 systems
C
1
star
19

snappy

A fast compressor/decompressor
C++
1
star
20

gburd.github.com

Technical Blog
1
star
21

libperf

libperf exposes the Linux kernel performance counters subsystem to userspace code
C
1
star
22

fsblksz

Output the block size for a given filesystem
C
1
star
23

kdtree

a binary tree in which every node is a k-dimensional point
C
1
star
24

cv

My Curriculum Vitae (aka Resume)
TeX
1
star
25

leveldb

Google's LevelDB
C++
1
star