255
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 85
THC-Rut 1.2.5
THC-Rut is your first knife on foreign network. more>>
THC-Rut is your first knife on foreign network. It gathers informations from local and remote networks.
It offers a wide range of network discovery utilities like arp lookup on an IP range, spoofed DHCP request, RARP, BOOTP, ICMP-ping, ICMP address mask request, OS fingerprinting, high-speed host discovery, ...
THC-RUT comes with a OS host Fingerprinter which determines the remote OS by open/closed port characteristics, banner matching and nmap fingerprinting techniques (T1, tcpoptions).
The fingerprinter has been developerd to quickly (10mins) categorize hosts on a Class B network. Information sources are (amoung others) SNMP replies, telnetd (NVT) negotiation options, generic Banner Matching, HTTP-Server version, DCE request and tcp options. It is compatible to the nmap-os-fingerprints database and comes in addition to this with his own perl regex capable fingerprinting database (thcrut-os-fingerprints).
Example (OS fingerprinting):
# ./thcrut discover -O 192.168.0.1-192.168.255.254
128321 packets received by filter, 0 packets dropped by kernel
Completed in 8 minutes, 38 seconds.
<<lessIt offers a wide range of network discovery utilities like arp lookup on an IP range, spoofed DHCP request, RARP, BOOTP, ICMP-ping, ICMP address mask request, OS fingerprinting, high-speed host discovery, ...
THC-RUT comes with a OS host Fingerprinter which determines the remote OS by open/closed port characteristics, banner matching and nmap fingerprinting techniques (T1, tcpoptions).
The fingerprinter has been developerd to quickly (10mins) categorize hosts on a Class B network. Information sources are (amoung others) SNMP replies, telnetd (NVT) negotiation options, generic Banner Matching, HTTP-Server version, DCE request and tcp options. It is compatible to the nmap-os-fingerprints database and comes in addition to this with his own perl regex capable fingerprinting database (thcrut-os-fingerprints).
Example (OS fingerprinting):
# ./thcrut discover -O 192.168.0.1-192.168.255.254
128321 packets received by filter, 0 packets dropped by kernel
Completed in 8 minutes, 38 seconds.
Download (0.65MB)
Added: 2006-03-08 License: GPL (GNU General Public License) Price:
766 downloads
AudioCD::Mac 0.25
AudioCD::Mac is a MacPerl extension for controlling Audio CDs. more>>
AudioCD::Mac is a MacPerl extension for controlling Audio CDs.
SYNOPSIS
#!perl -w
use AudioCD;
use strict;
my $cd = new AudioCD;
$cd->volume(255);
$cd->play(2);
print "Now playingn" if $cd->status == CD_PLAY;
printf "Volume is %dn", $cd->volume;
sleep(5);
$cd->pause;
print "Now pausedn" if $cd->status == CD_PAUSE;
sleep(5);
$cd->volume(100);
$cd->continue;
print "Now playingn" if $cd->status == CD_PLAY;
printf "Volume is %dn", $cd->volume;
sleep(5);
my @info = $cd->info;
printf "Currently at track %d, %.2d:%.2dn", @info[0..2];
$cd->stop;
my $status = $cd->status;
print "Now stoppedn" if
($status == CD_FINISH || $status == CD_STOP);
if (do CDDB.pm) { # sold separately
my $cddb = new CDDB;
my @cddb_info = $cddb->calculate_id( $cd->cddb_toc );
my @discs = $cddb->get_discs(@cddb_info[0, 3, 4]);
print "You were probably listening to $discs[0]->[2]n";
}
$cd->eject;
This is the MacPerl module to be used by the AudioCD module. Other modules can be written for other platforms, but this one is Mac specific, calling Mac OS APIs to control the CD player.
<<lessSYNOPSIS
#!perl -w
use AudioCD;
use strict;
my $cd = new AudioCD;
$cd->volume(255);
$cd->play(2);
print "Now playingn" if $cd->status == CD_PLAY;
printf "Volume is %dn", $cd->volume;
sleep(5);
$cd->pause;
print "Now pausedn" if $cd->status == CD_PAUSE;
sleep(5);
$cd->volume(100);
$cd->continue;
print "Now playingn" if $cd->status == CD_PLAY;
printf "Volume is %dn", $cd->volume;
sleep(5);
my @info = $cd->info;
printf "Currently at track %d, %.2d:%.2dn", @info[0..2];
$cd->stop;
my $status = $cd->status;
print "Now stoppedn" if
($status == CD_FINISH || $status == CD_STOP);
if (do CDDB.pm) { # sold separately
my $cddb = new CDDB;
my @cddb_info = $cddb->calculate_id( $cd->cddb_toc );
my @discs = $cddb->get_discs(@cddb_info[0, 3, 4]);
print "You were probably listening to $discs[0]->[2]n";
}
$cd->eject;
This is the MacPerl module to be used by the AudioCD module. Other modules can be written for other platforms, but this one is Mac specific, calling Mac OS APIs to control the CD player.
Download (0.014MB)
Added: 2006-06-22 License: Perl Artistic License Price:
1220 downloads
jTDS 1.2
jTDS is a JDBC 3.0 type 4 driver for Microsoft SQL Server and Sybase. more>>
jTDS is an open source 100% pure Java (type 4) JDBC 3.0 driver for Microsoft SQL Server (6.5, 7, 2000 and 2005) and Sybase (10, 11, 12, 15). jTDS is based on FreeTDS and is currently the fastest production-ready JDBC driver for SQL Server and Sybase.
jTDS is 100% JDBC 3.0 compatible, supporting forward-only and scrollable/updateable ResultSets, concurrent (completely independent) Statements and implementing all the DatabaseMetaData and ResultSetMetaData methods.
Quite a few of the commercial JDBC drivers out there are based on jTDS (or FreeTDS), even if they no longer acknowledge this.
jTDS has been tested with virtually all JDBC-based database management tools and is the driver of choice for most of these (recommended for DbVisualizer and SQuirreL SQL, distributed with Aqua Data Studio and DataDino).
jTDS is also becoming a common choice for enterprise-level applications: it passes both the J2EE 1.3 certification and Hibernate test suites, and is recommended for JBoss, Hibernate, Atlassian JIRA and Confluence and Compiere.
jTDS is free software. jTDS is released under the terms of the GNU LGPL, giving you not only the posibility to debug and tweak it to your own liking but also to use it in and distribute it with your free or commercial applications.
The other "free" choices, the JDBC-ODBC bridge and Microsofts own JDBC driver are not actually free. If you encounter an issue with any of them you wont be able to fix it yourself and response times from both Microsoft and Sun are anything but short. Also, both of them lack functionality (the Microsoft driver implements JDBC 2.0, while the bridge is just a JDBC 1.0 implementation) and have serious stability problems: the bridge crashes the JVM if the ODBC driver has any problem and Microsoft just has no intention of really supporting Java/JDBC.
jTDS is also the most performant JDBC driver for both SQL Server and Sybase. We have an older benchmark result but we strongly encourage you to download any benchmark published by commercial JDBC driver vendors and see for yourself. Here are a couple of benchmarks you could use: JNetDirects JDBC Performance Benchmark and i-net Softwares BenchTest 2.1 for MS SQL Server.
Anyway, just give it a spin.
Enhancements:
New features:
- Support for Sybase ASE 15
- Improved support for SQL Server 2005 varchar(max) and varbinary(max)
- Complete handling of cursor exceptions and downgrading
- Better handling of cancels and timeouts
- Configurable socket timeout
- Subclasses of basic JDBC types recognized as setObject() values
Major bug fixes (out of over 30 fixes):
- Statement pool memory leak
- Java 1.5 BigDecimal problems
- Possible synchronization problems
- setAutoCommit() behavior not according to specification
- getTimestamp() returns invalid value after calling getString()
- Cursor opens fails when cursor threshold -1
- iso_1 charset and Sybase
- "All pipe instances are busy" not handled properly
- SSL fails with SQL Server 2005
- Sybase: insert UTF8 string fails when length is 255
<<lessjTDS is 100% JDBC 3.0 compatible, supporting forward-only and scrollable/updateable ResultSets, concurrent (completely independent) Statements and implementing all the DatabaseMetaData and ResultSetMetaData methods.
Quite a few of the commercial JDBC drivers out there are based on jTDS (or FreeTDS), even if they no longer acknowledge this.
jTDS has been tested with virtually all JDBC-based database management tools and is the driver of choice for most of these (recommended for DbVisualizer and SQuirreL SQL, distributed with Aqua Data Studio and DataDino).
jTDS is also becoming a common choice for enterprise-level applications: it passes both the J2EE 1.3 certification and Hibernate test suites, and is recommended for JBoss, Hibernate, Atlassian JIRA and Confluence and Compiere.
jTDS is free software. jTDS is released under the terms of the GNU LGPL, giving you not only the posibility to debug and tweak it to your own liking but also to use it in and distribute it with your free or commercial applications.
The other "free" choices, the JDBC-ODBC bridge and Microsofts own JDBC driver are not actually free. If you encounter an issue with any of them you wont be able to fix it yourself and response times from both Microsoft and Sun are anything but short. Also, both of them lack functionality (the Microsoft driver implements JDBC 2.0, while the bridge is just a JDBC 1.0 implementation) and have serious stability problems: the bridge crashes the JVM if the ODBC driver has any problem and Microsoft just has no intention of really supporting Java/JDBC.
jTDS is also the most performant JDBC driver for both SQL Server and Sybase. We have an older benchmark result but we strongly encourage you to download any benchmark published by commercial JDBC driver vendors and see for yourself. Here are a couple of benchmarks you could use: JNetDirects JDBC Performance Benchmark and i-net Softwares BenchTest 2.1 for MS SQL Server.
Anyway, just give it a spin.
Enhancements:
New features:
- Support for Sybase ASE 15
- Improved support for SQL Server 2005 varchar(max) and varbinary(max)
- Complete handling of cursor exceptions and downgrading
- Better handling of cancels and timeouts
- Configurable socket timeout
- Subclasses of basic JDBC types recognized as setObject() values
Major bug fixes (out of over 30 fixes):
- Statement pool memory leak
- Java 1.5 BigDecimal problems
- Possible synchronization problems
- setAutoCommit() behavior not according to specification
- getTimestamp() returns invalid value after calling getString()
- Cursor opens fails when cursor threshold -1
- iso_1 charset and Sybase
- "All pipe instances are busy" not handled properly
- SSL fails with SQL Server 2005
- Sybase: insert UTF8 string fails when length is 255
Download (0.45MB)
Added: 2005-11-09 License: LGPL (GNU Lesser General Public License) Price:
836 downloads
cexec 1.26
cexec is a software for building ad-hoc clusters. more>>
cexec is a software for building ad-hoc clusters.
To install cexec, you need to first build it (type make) then copy the executables into /usr/local/bin or someplace in your path. Youll probably want to copy the manual pages (*.1) someplace in your $MANPATH.
Note that the cexec on-wire protocol is still evolving in incompatible ways; Its not wise to try and use the cluster tools across administrative domains.
A cexec "cluster" consists of:
- One or more applications
- An announcement address. This can be a broadcast address, or a multicast address. It could also be a unicast address, but then that wouldnt allow for other servers. The default is probably fine for most people (255.255.255.255) - this value should be stored in the $GROUP environment variable.
- A bunch of general-purpose unix-like machines
- A keypair that identifies applications, and mutually authenticates clients/servers
To build a cexec cluster, you need to decide on your applications, announcement address, and have computers to run it. As an example, well build a cluster-enabled version of "oggenc". This example assumes youve already got oggenc installed, and you already got your machines together:
0. Build the keypair using "ckeygen" ckeygen distributed_ogg distributed_ogg.pub
1. Distribute the "distributed_ogg" key to all of your "worker machines"
2. Distribute the "distributed_ogg.pub" key to all of your "client machines"
3. Start the service on all your workers: cservice distributed_ogg oggenc -o- -
4. Start a logger service on any worker or client: crat
5. Encode something, cexec distributed_ogg.pub < input.wav > output.ogg
You couldve used any application- not just "oggenc"- with this cluster. You could make this cluster as big as you want (with multicast tunnels) and cross as many networks as you want (with cproxy).
When "cexec" starts up, it locates the "best" copy of cservice on the network. It does this by broadcasting announcements. One of the cservice machines will attempt to "connect back" to the cexec after a delay thats proportional to the systems load. The first machine to "reach back" and perform the various challenges regarding the keypair is the winner.
At this point, cexec multiplexes the local file descriptors over the work-channel and cservice does the reverse on the other side. cservice uses pipes where possible, but will use socketpair() to emulate readwrite devices like terminals and sockets.
When "cservice" is done, it sends its exit code back to "cexec". If "cexec" didnt like any part of the protocol exchange, it "complains". If everything went okay, it announces the exit code in the same way. These "alerts" are received by a "crat" running on the network.
Enhancements:
- This release doesnt regenerate parity, which should help acquire loaded hosts (above runq length 10.0) faster.
<<lessTo install cexec, you need to first build it (type make) then copy the executables into /usr/local/bin or someplace in your path. Youll probably want to copy the manual pages (*.1) someplace in your $MANPATH.
Note that the cexec on-wire protocol is still evolving in incompatible ways; Its not wise to try and use the cluster tools across administrative domains.
A cexec "cluster" consists of:
- One or more applications
- An announcement address. This can be a broadcast address, or a multicast address. It could also be a unicast address, but then that wouldnt allow for other servers. The default is probably fine for most people (255.255.255.255) - this value should be stored in the $GROUP environment variable.
- A bunch of general-purpose unix-like machines
- A keypair that identifies applications, and mutually authenticates clients/servers
To build a cexec cluster, you need to decide on your applications, announcement address, and have computers to run it. As an example, well build a cluster-enabled version of "oggenc". This example assumes youve already got oggenc installed, and you already got your machines together:
0. Build the keypair using "ckeygen" ckeygen distributed_ogg distributed_ogg.pub
1. Distribute the "distributed_ogg" key to all of your "worker machines"
2. Distribute the "distributed_ogg.pub" key to all of your "client machines"
3. Start the service on all your workers: cservice distributed_ogg oggenc -o- -
4. Start a logger service on any worker or client: crat
5. Encode something, cexec distributed_ogg.pub < input.wav > output.ogg
You couldve used any application- not just "oggenc"- with this cluster. You could make this cluster as big as you want (with multicast tunnels) and cross as many networks as you want (with cproxy).
When "cexec" starts up, it locates the "best" copy of cservice on the network. It does this by broadcasting announcements. One of the cservice machines will attempt to "connect back" to the cexec after a delay thats proportional to the systems load. The first machine to "reach back" and perform the various challenges regarding the keypair is the winner.
At this point, cexec multiplexes the local file descriptors over the work-channel and cservice does the reverse on the other side. cservice uses pipes where possible, but will use socketpair() to emulate readwrite devices like terminals and sockets.
When "cservice" is done, it sends its exit code back to "cexec". If "cexec" didnt like any part of the protocol exchange, it "complains". If everything went okay, it announces the exit code in the same way. These "alerts" are received by a "crat" running on the network.
Enhancements:
- This release doesnt regenerate parity, which should help acquire loaded hosts (above runq length 10.0) faster.
Download (0.090MB)
Added: 2006-10-06 License: GPL (GNU General Public License) Price:
1115 downloads
ID3.py 1.2
ID3.py is an object-oriented Python module for manipulating the so-called ID3 informational tags on MP3 files. more>>
ID3.py is an object-oriented Python module for manipulating the so-called ID3 informational tags on MP3 files. Note that this is the first thing Ive ever written in Python, so please bear with me if Ive done something atrociously wrong.
ID3.py supports ID3 version 1.1, including the track numbering field. I have no current plans to code up the monstrosity that is ID3v2 1(http://www.id3.org/id3v2.3.0.html) but if someone wants to add that functionality, feel free!
To install ID3.py, either simply copy the ID3.py file to your site-wide Python module installation directory (/usr/local/lib/python/site-python, for instance) or, if you have Python v1.6 or later (or have Distutils installed), you can simply run:
python setup.py install
Enhancements:
- New dictionary-based interface, compatible with ogg.vorbis module.
- Default genre will be 255 if not specified, not 0 ("Blues").
- Rewrote id3-tagger.py to use new dictionary-based interface (simplifies code a lot).
<<lessID3.py supports ID3 version 1.1, including the track numbering field. I have no current plans to code up the monstrosity that is ID3v2 1(http://www.id3.org/id3v2.3.0.html) but if someone wants to add that functionality, feel free!
To install ID3.py, either simply copy the ID3.py file to your site-wide Python module installation directory (/usr/local/lib/python/site-python, for instance) or, if you have Python v1.6 or later (or have Distutils installed), you can simply run:
python setup.py install
Enhancements:
- New dictionary-based interface, compatible with ogg.vorbis module.
- Default genre will be 255 if not specified, not 0 ("Blues").
- Rewrote id3-tagger.py to use new dictionary-based interface (simplifies code a lot).
Download (0.016MB)
Added: 2006-07-26 License: GPL (GNU General Public License) Price:
1192 downloads
id3edit 2.0
ID3edit is a command line based ID3v1.1 tag editor for unix like systems. more>>
ID3edit is a command line based ID3v1.1 tag editor for unix like systems. If you dont know what an ID3 tag is, let me fill you in. An ID3 tag is a descriptive tag placed in the last 128 bytes of an mp3 file. The information that is placed in this tag shows as follows:
Song Name (30 Characters Max)
Artist Name (30 Characters Max)
Album Name (30 Characters Max)
Year (4 Characters Max)
Comment (28 Characters Max)
Track (Number Between 0-255)
Genre (Number Between 0-255)
To install id3edit, simply gunzip the archive file like so...
$gunzip id3edit.tar.gz
Next, unpack the tar file like so...
$tar -xvf id3edit.tar
Now, you should have a new directory called id3edit. Next you change to the id3edit directory and type...
$make
This will compile program. To install id3edit into /usr/local/bin, as root type...
$make install
<<lessSong Name (30 Characters Max)
Artist Name (30 Characters Max)
Album Name (30 Characters Max)
Year (4 Characters Max)
Comment (28 Characters Max)
Track (Number Between 0-255)
Genre (Number Between 0-255)
To install id3edit, simply gunzip the archive file like so...
$gunzip id3edit.tar.gz
Next, unpack the tar file like so...
$tar -xvf id3edit.tar
Now, you should have a new directory called id3edit. Next you change to the id3edit directory and type...
$make
This will compile program. To install id3edit into /usr/local/bin, as root type...
$make install
Download (0.008MB)
Added: 2006-07-26 License: GPL (GNU General Public License) Price:
1187 downloads
giblib 1.2.4
Giblib is a utility library more>>
Giblib is a utility library used by many of the applications I write. It incorporates doubly linked lists, some string functions, and a wrapper for imlib2. The wrapper does two things. It gives you access to fontstyles, which can be loaded from files, saved to files or defined dynamically through the API. It also, and more importantly, wraps imlib2s context API changing this sections:
imlib_context_set_image(image);
imlib_context_set_blend(1);
imlib_context_set_dither(0);
imlib_context_set_anti_alias(1);
imlib_context_set_operation(IMLIB_OP_COPY);
imlib_blend_image_onto_image(src,0,0,0,w,h,0,0,w,h);
imlib_context_set_image(image2);
imlib_context_set_color(255,255,255,255);
imlib_image_draw_rectangle(0,0,50,50);
to this:
gib_imlib_blend_image_onto_image(image,src,0,0,0,w,h,0,0,w,h,0,1,1);
gib_imlib_image_draw_rectangle(image2,0,0,50,50,255,255,255,255);
To use giblib in your own applications, simply #include , and compile using CFLAGS=`giblib-config --cflags` LIBS=`giblib-config --libs`.
Enhancements:
- Applied patch from Claes Nasten
- fixes some gib_hash glitches including a possible core dump
<<lessimlib_context_set_image(image);
imlib_context_set_blend(1);
imlib_context_set_dither(0);
imlib_context_set_anti_alias(1);
imlib_context_set_operation(IMLIB_OP_COPY);
imlib_blend_image_onto_image(src,0,0,0,w,h,0,0,w,h);
imlib_context_set_image(image2);
imlib_context_set_color(255,255,255,255);
imlib_image_draw_rectangle(0,0,50,50);
to this:
gib_imlib_blend_image_onto_image(image,src,0,0,0,w,h,0,0,w,h,0,1,1);
gib_imlib_image_draw_rectangle(image2,0,0,50,50,255,255,255,255);
To use giblib in your own applications, simply #include , and compile using CFLAGS=`giblib-config --cflags` LIBS=`giblib-config --libs`.
Enhancements:
- Applied patch from Claes Nasten
- fixes some gib_hash glitches including a possible core dump
Download (0.28MB)
Added: 2006-07-15 License: GPL (GNU General Public License) Price:
1197 downloads
Whatmask 1.2
Whatmask provides a subnet info utility. more>>
Whatmask provides a subnet info utility.
Whatmask is a small C program that helps with network settings. Notations supported are CIDR (e.g. /24), Netmask (e.g. 255.255.255.0), and Wilcard Bits (e.g. 0.0.0.255).
These notations are all identical. CIDR notation commonly has a "/" in front of the number (representing the number of bits). Whatmask can accept these notations with or without a slash.
It can take any IP in the subnet along with the netmask in any format, and it will echo back the netmask in three formats, the network address, the broadcast address, the number of useable IPs, and the range of IPs in the subnet.
Binaries for Linux, Win32, and MacOS 9/X are available.
Enhancements:
- Added support for hex netmasks
- Minor bugfixes / cleanup
<<lessWhatmask is a small C program that helps with network settings. Notations supported are CIDR (e.g. /24), Netmask (e.g. 255.255.255.0), and Wilcard Bits (e.g. 0.0.0.255).
These notations are all identical. CIDR notation commonly has a "/" in front of the number (representing the number of bits). Whatmask can accept these notations with or without a slash.
It can take any IP in the subnet along with the netmask in any format, and it will echo back the netmask in three formats, the network address, the broadcast address, the number of useable IPs, and the range of IPs in the subnet.
Binaries for Linux, Win32, and MacOS 9/X are available.
Enhancements:
- Added support for hex netmasks
- Minor bugfixes / cleanup
Download (0.16MB)
Added: 2007-03-21 License: GPL (GNU General Public License) Price:
956 downloads
IPChains 0.5
IPChains is a Perl module to create and manipulate ipchains via Perl. more>>
IPChains is a Perl module to create and manipulate ipchains via Perl.
SYNOPSIS
use IPChains;
$fw = IPChains->new(-option => value, ... ); $fw->append(chain);
This module acts as an interface to the ipchains(8) userspace utility by Paul "Rusty" Russell (http://www.rustcorp.com/linux/ipchains/). It attempts to include all the functionality of the original code with a simplified user interface via Perl. In addition, plans for log parsing facilities, an integrated interface to ipmasqadm, and possibly traffic shaping are slated for up and coming versions.
The new() and attribute() methods support the following options:
Source
Specifies origination address of packet. Appending hostmask to this address using a / is OK, as well as specifying it separately (see SourceMask).
SourceMask
Hostmask for origination address. Can either be in 24 or 255.255.255.0 style.
SourcePort
Specific port or port range (use xxx:xxx to denote range), requires specific protocol specification.
Dest
Specifies destination address of packet. Appending hostmask to this address using a / is OK, as well as specifying it separately (see DestMask)
DestMask
Destination address, (see SourceMask).
DestPort
Destination Port, (see SourcePort).
Prot
Protocol. Can be tcp, udp, icmp, or all. Required for specifying specific port(s).
ICMP
ICMP Name/Code (in place of port when ICMP is specified as protocol).
Here is a small table of some of the most common ICMP packets:
Number Name Required by
0 echo-reply ping
3 destination-unreachable Any TCP/UDP traffic.
5 redirect routing if not running
routing daemon
8 echo-request ping
11 time-exceeded traceroute
Rule
Target. Can be ACCEPT, DENY, REJECT, MASQ, REDIRECT, RETURN, or a user-defined chain. Note: This is case sensitive.
Interface
Specify a specify interface as part of the criteria (ie, eth0, ppp0, etc.).
Fragment
Rule only refers to second and further fragments of fragmented packets (1 or 0).
Bidir
Makes criteria effective in both directions (1 or 0).
Verbose
Set verbose option for setting rules or list() (1 or 0).
Numeric
Show output from list() in numeric format. No DNS lookups, etc.. (1 or 0).
Log
Enable kernel logging (via syslog, kern.info) of matched packets (1 or 0).
Output
Copy matching packets to the userspace device (advanced).
Mark
Mark matching packets with specified number (advanced).
TOS
Used for modifying the TOS field in the IP header. Takes 2 args, AND and XOR masks, (ie, (TOS => ["0x01", "0x10"])). This feature is highly untested.
The first mask is ANDed with the packets current TOS, and the second mask is XORed with it. Use the following table for reference:
TOS Name Value Typical Uses
Minimum Delay 0x01 0x10 ftp, telnet
Maximum Throughput 0x01 0x08 ftp-data
Maximum Reliability 0x01 0x04 snmp
Minimum Cost 0x01 0x02 nntp
Exact
Display exact numbers in byte counters instead of numbers rounded in Ks, Ms, or Gs (1 or 0).
SYN
Only match TCP packets with the SYN bit set and the ACK and FIN bits cleared (1 or 0).
<<lessSYNOPSIS
use IPChains;
$fw = IPChains->new(-option => value, ... ); $fw->append(chain);
This module acts as an interface to the ipchains(8) userspace utility by Paul "Rusty" Russell (http://www.rustcorp.com/linux/ipchains/). It attempts to include all the functionality of the original code with a simplified user interface via Perl. In addition, plans for log parsing facilities, an integrated interface to ipmasqadm, and possibly traffic shaping are slated for up and coming versions.
The new() and attribute() methods support the following options:
Source
Specifies origination address of packet. Appending hostmask to this address using a / is OK, as well as specifying it separately (see SourceMask).
SourceMask
Hostmask for origination address. Can either be in 24 or 255.255.255.0 style.
SourcePort
Specific port or port range (use xxx:xxx to denote range), requires specific protocol specification.
Dest
Specifies destination address of packet. Appending hostmask to this address using a / is OK, as well as specifying it separately (see DestMask)
DestMask
Destination address, (see SourceMask).
DestPort
Destination Port, (see SourcePort).
Prot
Protocol. Can be tcp, udp, icmp, or all. Required for specifying specific port(s).
ICMP
ICMP Name/Code (in place of port when ICMP is specified as protocol).
Here is a small table of some of the most common ICMP packets:
Number Name Required by
0 echo-reply ping
3 destination-unreachable Any TCP/UDP traffic.
5 redirect routing if not running
routing daemon
8 echo-request ping
11 time-exceeded traceroute
Rule
Target. Can be ACCEPT, DENY, REJECT, MASQ, REDIRECT, RETURN, or a user-defined chain. Note: This is case sensitive.
Interface
Specify a specify interface as part of the criteria (ie, eth0, ppp0, etc.).
Fragment
Rule only refers to second and further fragments of fragmented packets (1 or 0).
Bidir
Makes criteria effective in both directions (1 or 0).
Verbose
Set verbose option for setting rules or list() (1 or 0).
Numeric
Show output from list() in numeric format. No DNS lookups, etc.. (1 or 0).
Log
Enable kernel logging (via syslog, kern.info) of matched packets (1 or 0).
Output
Copy matching packets to the userspace device (advanced).
Mark
Mark matching packets with specified number (advanced).
TOS
Used for modifying the TOS field in the IP header. Takes 2 args, AND and XOR masks, (ie, (TOS => ["0x01", "0x10"])). This feature is highly untested.
The first mask is ANDed with the packets current TOS, and the second mask is XORed with it. Use the following table for reference:
TOS Name Value Typical Uses
Minimum Delay 0x01 0x10 ftp, telnet
Maximum Throughput 0x01 0x08 ftp-data
Maximum Reliability 0x01 0x04 snmp
Minimum Cost 0x01 0x02 nntp
Exact
Display exact numbers in byte counters instead of numbers rounded in Ks, Ms, or Gs (1 or 0).
SYN
Only match TCP packets with the SYN bit set and the ACK and FIN bits cleared (1 or 0).
Download (0.050MB)
Added: 2007-05-10 License: Perl Artistic License Price:
897 downloads
tcpgate 0.0.2
tcpgate is a daemon that listens on a port for connections, and when the connection is made, proxies/bounces it to the host/port more>>
I wrote this to be able to access a news server that would not allow me to connect from my machine, but would from another that I had access to.
tcpgate is a daemon that listens on a port for connections, and when the connection is made, proxies/bounces it to the host/port pair specified in the config file unmodified. Very simple, but very useful when you need to get around a bad route/firewall. Latest version has IP-based access control option.
Installation:
install libtcp++
gunzip -c tcpgate-0.0.1.tar.gz | tar xvf -
make tcpgate
Usage:
./tcpgate config_file
example of config_file
to_port 119
to_host news.mydomain.com
port 1234
log_file tcpgate.log
ip_rules_file site.rules
to_port - port to which the packets are proxied,
to_host - the host to which the packets are proxied,
port - port that tcpgate listens on
log_file - file where tcpgate writes the log :)
ip_rules_file - if present, enables IP-based access control, and must contain a set
of allow rules. Any host not matched by those rules will be denied connection.
Example
of ip_rules_file:
127.0.0.1/255.255.255.255
128.187.0.0/255.255.0.0
The above example will allow localhost to connect, as well as any machine coming from 128.187.0.0 subnet
Enhancements:
- added ip-based access control
<<lesstcpgate is a daemon that listens on a port for connections, and when the connection is made, proxies/bounces it to the host/port pair specified in the config file unmodified. Very simple, but very useful when you need to get around a bad route/firewall. Latest version has IP-based access control option.
Installation:
install libtcp++
gunzip -c tcpgate-0.0.1.tar.gz | tar xvf -
make tcpgate
Usage:
./tcpgate config_file
example of config_file
to_port 119
to_host news.mydomain.com
port 1234
log_file tcpgate.log
ip_rules_file site.rules
to_port - port to which the packets are proxied,
to_host - the host to which the packets are proxied,
port - port that tcpgate listens on
log_file - file where tcpgate writes the log :)
ip_rules_file - if present, enables IP-based access control, and must contain a set
of allow rules. Any host not matched by those rules will be denied connection.
Example
of ip_rules_file:
127.0.0.1/255.255.255.255
128.187.0.0/255.255.0.0
The above example will allow localhost to connect, as well as any machine coming from 128.187.0.0 subnet
Enhancements:
- added ip-based access control
Download (0.003MB)
Added: 2006-05-24 License: Freeware Price:
1248 downloads
DocPile 3.1.2
DocPile is a PHP-based document management system. more>>
Docpile (SDMS clone) is a PHP-based document management system that allows multiple people to share documents and keep track of revisions.
Users can upload and download documents, grant per-file, -user, or -folder access privileges, and send notification emails when documents are being updated.
Administrators can create access groups, each responsible for a different set of folders and users.
Folder Access Privileges
Each user can have individual access privileges which include Read, Write, Modify, and Access. If none of these flags is checked then DocPile assumes "default" folder access privileges.
There are several ways that you can restrict users from using specific folders.
- One way to restrict users from using a folder is to uncheck all flags from the folder default access privileges, and then give privileges to individual users. This works but its time consuming and may get very complicated if you decide to change the access privileges for all users.
- Another way to do that is to create a Group, and then make the folder part of that group along with the users that should have access to it. That way, only users that belong to the group can access it, and users that DO NOT belong to the group will NOT have access.
Add a user
In access level :
- Value 0 should be used for an admin user profile
- Value 255 should be used for a public user profile
- Values between 0 and 255 should be used for standard user profile
Document Mime Types
Mime types are determined when the file is uploaded (the browser sends the mime information in the header along with the file). Once the document is uploaded, the mime type is stored in the Document->type variable, which is internally stored in the "documents" table.
If the mime type is not determined during upload, there are several ways to fix this problem. The easiest would be to use the mime type discovery php function right after the file is uploaded (docs-doc-update.php -- line 43, docs-doc-new.php -- line 41), or when the file is requested for download (docs-doc-download.php -- after line 21).
If you are using PHP >= 4.3.0, there is a built-in function mime_content_type(String filename) http://www.php.net/manual/en/function.mime-content-type.php that will do the trick.
Version restrictions:
- email FROM field is NOT correct
- While trying to retrieve a document from email and being logged out. the urlencode is url=%2Fdocs%2Fdocs-doc-view.php%3Fdoc_id%3D2 but after login the page shows as /docs/docs-doc-view.php?doc_id without the =2 at the end and causes an Access Denied. I looked through the code but being new to php I did not find an area to fix this issue. Will try to find the culprit and any other suggestions would be appreciated.
<<lessUsers can upload and download documents, grant per-file, -user, or -folder access privileges, and send notification emails when documents are being updated.
Administrators can create access groups, each responsible for a different set of folders and users.
Folder Access Privileges
Each user can have individual access privileges which include Read, Write, Modify, and Access. If none of these flags is checked then DocPile assumes "default" folder access privileges.
There are several ways that you can restrict users from using specific folders.
- One way to restrict users from using a folder is to uncheck all flags from the folder default access privileges, and then give privileges to individual users. This works but its time consuming and may get very complicated if you decide to change the access privileges for all users.
- Another way to do that is to create a Group, and then make the folder part of that group along with the users that should have access to it. That way, only users that belong to the group can access it, and users that DO NOT belong to the group will NOT have access.
Add a user
In access level :
- Value 0 should be used for an admin user profile
- Value 255 should be used for a public user profile
- Values between 0 and 255 should be used for standard user profile
Document Mime Types
Mime types are determined when the file is uploaded (the browser sends the mime information in the header along with the file). Once the document is uploaded, the mime type is stored in the Document->type variable, which is internally stored in the "documents" table.
If the mime type is not determined during upload, there are several ways to fix this problem. The easiest would be to use the mime type discovery php function right after the file is uploaded (docs-doc-update.php -- line 43, docs-doc-new.php -- line 41), or when the file is requested for download (docs-doc-download.php -- after line 21).
If you are using PHP >= 4.3.0, there is a built-in function mime_content_type(String filename) http://www.php.net/manual/en/function.mime-content-type.php that will do the trick.
Version restrictions:
- email FROM field is NOT correct
- While trying to retrieve a document from email and being logged out. the urlencode is url=%2Fdocs%2Fdocs-doc-view.php%3Fdoc_id%3D2 but after login the page shows as /docs/docs-doc-view.php?doc_id without the =2 at the end and causes an Access Denied. I looked through the code but being new to php I did not find an area to fix this issue. Will try to find the culprit and any other suggestions would be appreciated.
Download (0.16MB)
Added: 2005-04-25 License: GPL (GNU General Public License) Price:
1642 downloads
Sort::Key 1.28
Sort::Key is the fastest way to sort anything in Perl. more>>
Sort::Key is the fastest way to sort anything in Perl.
SYNOPSIS
use Sort::Key qw(keysort nkeysort ikeysort);
@by_name = keysort { "$_->{surname} $_->{name}" } @people;
# sorting by a numeric key:
@by_age = nkeysort { $_->{age} } @people;
# sorting by a numeric integer key:
@by_sons = ikeysort { $_->{sons} } @people;
Sort::Key provides a set of functions to sort lists of values by some calculated key value.
It is faster (usually much faster) and uses less memory than other alternatives implemented around perl sort function (ST, GRT, etc.).
Multikey sorting functionality is also provided via the companion modules Sort::Key::Multi, Sort::Key::Maker and Sort::Key::Register.
FUNCTIONS
This module provides a large number of sorting subroutines but they are all variations off the keysort one:
@sorted = keysort { CALC_KEY($_) } @data
that is conceptually equivalent to
@sorted = sort { CALC_KEY($a) cmp CALC_KEY($b) } @data
and where CALC_KEY($_) can be any expresion to extract the key value from $_ (not only a subroutine call).
For instance, some variations are nkeysort that performs a numeric comparison, rkeysort that orders the data in descending order, ikeysort and ukeysort that are optimized versions of nkeysort that can be used when the keys are integers or unsigned integers respectively, etc.
Also, inplace versions of the sorters are provided. For instance
keysort_inplace { CALC_KEY($_) } @data
that is equivalent to
@data = keysort { CALC_KEY($_) } @data
but being (a bit) faster and using less memory.
The full list of subroutines that can be imported from this module follows:
keysort { CALC_KEY } @array
returns the elements on @array sorted by the key calculated applying { CALC_KEY } to them.
Inside { CALC_KEY }, the object is available as $_.
For example:
@a=({name=>john, surname=>smith}, {name=>paul, surname=>belvedere});
@by_name=keysort {$_->{name}} @a;
This function honours the use locale pragma.
nkeysort { CALC_KEY } @array
similar to keysort but compares the keys numerically instead of as strings.
This function honours the use integer pragma, i.e.:
use integer;
my @s=(2.4, 2.0, 1.6, 1.2, 0.8);
my @ns = nkeysort { $_ } @s;
print "@nsn"
prints
0.8 1.6 1.2 2.4 2
rnkeysort { CALC_KEY } @array
works as nkeysort, comparing keys in reverse (or descending) numerical order.
ikeysort { CALC_KEY } @array
works as keysort but compares the keys as integers (32 bits or more, no checking is performed for overflows).
rikeysort { CALC_KEY } @array
works as ikeysort, but in reverse (or descending) order.
ukeysort { CALC_KEY } @array
works as keysort but compares the keys as unsigned integers (32 bits or more).
For instance, it can be used to efficiently sort IP4 addresses:
my @data = qw(1.2.3.4 4.3.2.1 11.1.111.1 222.12.1.34
0.0.0.0 255.255.255.0) 127.0.0.1);
my @sorted = ukeysort {
my @a = split /./;
(((($a[0] name,
$_->middlename },
qw(str str str);
Sort::Key::register_type Color =>
sub { $_->R, $_->G, $_->B },
qw(int int int);
Once a datatype has been registered it can be used in the same way as types supported natively, even for defining new types, i.e.:
Sort::Key::register_type Family =>
sub { $_->man, $_->woman },
qw(Person Person);
<<lessSYNOPSIS
use Sort::Key qw(keysort nkeysort ikeysort);
@by_name = keysort { "$_->{surname} $_->{name}" } @people;
# sorting by a numeric key:
@by_age = nkeysort { $_->{age} } @people;
# sorting by a numeric integer key:
@by_sons = ikeysort { $_->{sons} } @people;
Sort::Key provides a set of functions to sort lists of values by some calculated key value.
It is faster (usually much faster) and uses less memory than other alternatives implemented around perl sort function (ST, GRT, etc.).
Multikey sorting functionality is also provided via the companion modules Sort::Key::Multi, Sort::Key::Maker and Sort::Key::Register.
FUNCTIONS
This module provides a large number of sorting subroutines but they are all variations off the keysort one:
@sorted = keysort { CALC_KEY($_) } @data
that is conceptually equivalent to
@sorted = sort { CALC_KEY($a) cmp CALC_KEY($b) } @data
and where CALC_KEY($_) can be any expresion to extract the key value from $_ (not only a subroutine call).
For instance, some variations are nkeysort that performs a numeric comparison, rkeysort that orders the data in descending order, ikeysort and ukeysort that are optimized versions of nkeysort that can be used when the keys are integers or unsigned integers respectively, etc.
Also, inplace versions of the sorters are provided. For instance
keysort_inplace { CALC_KEY($_) } @data
that is equivalent to
@data = keysort { CALC_KEY($_) } @data
but being (a bit) faster and using less memory.
The full list of subroutines that can be imported from this module follows:
keysort { CALC_KEY } @array
returns the elements on @array sorted by the key calculated applying { CALC_KEY } to them.
Inside { CALC_KEY }, the object is available as $_.
For example:
@a=({name=>john, surname=>smith}, {name=>paul, surname=>belvedere});
@by_name=keysort {$_->{name}} @a;
This function honours the use locale pragma.
nkeysort { CALC_KEY } @array
similar to keysort but compares the keys numerically instead of as strings.
This function honours the use integer pragma, i.e.:
use integer;
my @s=(2.4, 2.0, 1.6, 1.2, 0.8);
my @ns = nkeysort { $_ } @s;
print "@nsn"
prints
0.8 1.6 1.2 2.4 2
rnkeysort { CALC_KEY } @array
works as nkeysort, comparing keys in reverse (or descending) numerical order.
ikeysort { CALC_KEY } @array
works as keysort but compares the keys as integers (32 bits or more, no checking is performed for overflows).
rikeysort { CALC_KEY } @array
works as ikeysort, but in reverse (or descending) order.
ukeysort { CALC_KEY } @array
works as keysort but compares the keys as unsigned integers (32 bits or more).
For instance, it can be used to efficiently sort IP4 addresses:
my @data = qw(1.2.3.4 4.3.2.1 11.1.111.1 222.12.1.34
0.0.0.0 255.255.255.0) 127.0.0.1);
my @sorted = ukeysort {
my @a = split /./;
(((($a[0] name,
$_->middlename },
qw(str str str);
Sort::Key::register_type Color =>
sub { $_->R, $_->G, $_->B },
qw(int int int);
Once a datatype has been registered it can be used in the same way as types supported natively, even for defining new types, i.e.:
Sort::Key::register_type Family =>
sub { $_->man, $_->woman },
qw(Person Person);
Download (0.055MB)
Added: 2007-05-22 License: Perl Artistic License Price:
888 downloads
GD::XYScale 1.2
GD::XYScale can draw a 2D X-Y scale and use it. more>>
GD::XYScale can draw a 2D X-Y scale and use it.
SYNOPSIS
use GD;
use GD::XYScale;
$image = GD::Image->new($width,$height);
$white = $image->colorAllocate(255,255,255);
$black = $image->colorAllocate(0,0,0);
$blue = $image->colorAllocate(0,0,255);
# continue using your GD image object.
$scale = GD::XYScale->new($image);
# put the origin at x=50, y=80 and zoom-out with .5
$scale->origin(50,80,.5);
$scale->draw(1.5,$black);
$scale->name(up,
x scale,
y scale,
$blue,
gdSmallFont,
show_zoom,
$blue);
# draw some geomethric objects, curves,
# plot something... etc...
This module adds a 2D scale to your GD image. It needs a GD::Image object to work.
First versions were modifying GD::Image namespace and I then realized that this is not a good thing. In this version and future versions, the module will use its own namespace, so check your codes if you tried this module before version 1.2
<<lessSYNOPSIS
use GD;
use GD::XYScale;
$image = GD::Image->new($width,$height);
$white = $image->colorAllocate(255,255,255);
$black = $image->colorAllocate(0,0,0);
$blue = $image->colorAllocate(0,0,255);
# continue using your GD image object.
$scale = GD::XYScale->new($image);
# put the origin at x=50, y=80 and zoom-out with .5
$scale->origin(50,80,.5);
$scale->draw(1.5,$black);
$scale->name(up,
x scale,
y scale,
$blue,
gdSmallFont,
show_zoom,
$blue);
# draw some geomethric objects, curves,
# plot something... etc...
This module adds a 2D scale to your GD image. It needs a GD::Image object to work.
First versions were modifying GD::Image namespace and I then realized that this is not a good thing. In this version and future versions, the module will use its own namespace, so check your codes if you tried this module before version 1.2
Download (0.008MB)
Added: 2006-08-01 License: Perl Artistic License Price:
1179 downloads
Gimp::PDL 1.211
Gimp::PDL is a Perl module to overwrite Tile/Region functions to work with piddles. more>>
Gimp::PDL is a Perl module to overwrite Tile/Region functions to work with piddles. This module is obsolete, please remove any references to it.
SYNOPSIS
use Gimp;
use Gimp::PDL;
use PDL;
This module overwrites some methods of Gimp::Tile and Gimp::PixelRgn. The new functions return and accept piddles. The last argument (height) of gimp_pixel_rgn_set_rect is calculated from the piddle. There is no other way to access the raw pixeldata in Gimp.
Some exmaples:
$region = $drawable->get->pixel_rgn (0,0, 100,100, 1,0);
$pixel = $region->get_pixel (5,7); # fetches the pixel from (5|7)
print $pixel; # outputs something like
# [255, 127, 0], i.e. in
# RGB format ;)
$region->set_pixel ($pixel * 0.5, 5, 7);# darken the pixel
$rect = $region->get_rect (3,3,70,20); # get a horizontal stripe
$rect = $rect->hclip(255/5)*5; # clip and multiply by 5
$region->set_rect($rect); # and draw it!
undef $region; # and update it!
<<lessSYNOPSIS
use Gimp;
use Gimp::PDL;
use PDL;
This module overwrites some methods of Gimp::Tile and Gimp::PixelRgn. The new functions return and accept piddles. The last argument (height) of gimp_pixel_rgn_set_rect is calculated from the piddle. There is no other way to access the raw pixeldata in Gimp.
Some exmaples:
$region = $drawable->get->pixel_rgn (0,0, 100,100, 1,0);
$pixel = $region->get_pixel (5,7); # fetches the pixel from (5|7)
print $pixel; # outputs something like
# [255, 127, 0], i.e. in
# RGB format ;)
$region->set_pixel ($pixel * 0.5, 5, 7);# darken the pixel
$rect = $region->get_rect (3,3,70,20); # get a horizontal stripe
$rect = $rect->hclip(255/5)*5; # clip and multiply by 5
$region->set_rect($rect); # and draw it!
undef $region; # and update it!
Download (0.26MB)
Added: 2006-10-26 License: Perl Artistic License Price:
1093 downloads
RT-Thread 0.2.2
RT-Thread is a real-time operating system. more>>
RT-Thread is a real-time operating system. It is designed specifically for small memory footprint platforms. The kernel supports the tranditional RTOS services, such as multiple threads, semaphores, mutexes, event flags, mailboxes, etc.
RT-Thread project also provides a C-expression interpreter shell, from which a programmer can access kernel variables and invoke system functions.
Main features:
Kernel Object System
- There is a kernel object system, which can access and manage all of the kernel objects. Kernel objects include most of the facilities in the kernel, for example, thread, semaphore etc. Kernel objects can be static objects, whose memory is allocated in compiling. It can be dynamic objects as well, whose memory is allocated from system heaps in runtime. Through the kernel object system, RT-Thread operating system can be independent from the memory management system and greatly enhance the scalability of the system.
Multi-Task/Thread Scheduling
- RT-Thread operating system supports multi-task systems, which are based on thread scheduling. The scheduling algorithm used in RT-Thread operating system is a full preemptive priority-based scheduling algorithm. It supports 256 priority levels, in which 0 is the highest and 255 the lowest. The 255th priority is used for idle thread. The scheduling algorithm also supports threads running at same priority level. The shared time-slice round-robin scheduling is used for this case. The time of scheduler to determine the next highest ready thread is determinant. The number of threads in the system is unlimited, only related with RAM.
Synchronization Mechanisms
- RT-Thread operating system supports the traditional semaphore and mutex. Mutex objects use inherited priority to prevent priority reversion. The semaphore release action is safe for interrupt service routine. Moreover, the block queue for thread to obtain semaphore or mutex can be sorted by priority or FIFO.
Inter-Thread Communication
- RT-Thread operating systems supports event/fast event, mail box and message queue. The event mechanism is used to awake a thead by setting one or more corresponding bit of a binary number when an event ocurs. The fast event supports event thread queue. Once a one bit event occurs, the corresponding blocked thread can be found out timing accurately, then will be waked up. In mailbox, a mail length is fixed to 4 byte, which is more effective than message queue. The send action for communication facilities is also safe for interrupt service routine.
Clock and Timer
- In default, the system uses clock tick to implement shared time-slice scheduling. The timing sensitivity of thread is implemented by timers. The timer can be set as one-shot or periodic timeout.
Memory Management
- RT-Thread operating system supports two types memory management: static memory pool management and dynamic memory heap management. The time to allocate a memory block from the memory pool is determinant and when the memory pool is empty, the allocated thread can be blocked (or immediately return, or waiting for sometime to return, which are determined by a timeout parameter). When other thread releases memory blocks to this memory pool, the blocked thread is wake up.
Enhancements:
- More porting was done to Samsung S3C44b0 CPU, AMTEL AT91SAM7S64, Nintendo DS, and Intel i386.
<<lessRT-Thread project also provides a C-expression interpreter shell, from which a programmer can access kernel variables and invoke system functions.
Main features:
Kernel Object System
- There is a kernel object system, which can access and manage all of the kernel objects. Kernel objects include most of the facilities in the kernel, for example, thread, semaphore etc. Kernel objects can be static objects, whose memory is allocated in compiling. It can be dynamic objects as well, whose memory is allocated from system heaps in runtime. Through the kernel object system, RT-Thread operating system can be independent from the memory management system and greatly enhance the scalability of the system.
Multi-Task/Thread Scheduling
- RT-Thread operating system supports multi-task systems, which are based on thread scheduling. The scheduling algorithm used in RT-Thread operating system is a full preemptive priority-based scheduling algorithm. It supports 256 priority levels, in which 0 is the highest and 255 the lowest. The 255th priority is used for idle thread. The scheduling algorithm also supports threads running at same priority level. The shared time-slice round-robin scheduling is used for this case. The time of scheduler to determine the next highest ready thread is determinant. The number of threads in the system is unlimited, only related with RAM.
Synchronization Mechanisms
- RT-Thread operating system supports the traditional semaphore and mutex. Mutex objects use inherited priority to prevent priority reversion. The semaphore release action is safe for interrupt service routine. Moreover, the block queue for thread to obtain semaphore or mutex can be sorted by priority or FIFO.
Inter-Thread Communication
- RT-Thread operating systems supports event/fast event, mail box and message queue. The event mechanism is used to awake a thead by setting one or more corresponding bit of a binary number when an event ocurs. The fast event supports event thread queue. Once a one bit event occurs, the corresponding blocked thread can be found out timing accurately, then will be waked up. In mailbox, a mail length is fixed to 4 byte, which is more effective than message queue. The send action for communication facilities is also safe for interrupt service routine.
Clock and Timer
- In default, the system uses clock tick to implement shared time-slice scheduling. The timing sensitivity of thread is implemented by timers. The timer can be set as one-shot or periodic timeout.
Memory Management
- RT-Thread operating system supports two types memory management: static memory pool management and dynamic memory heap management. The time to allocate a memory block from the memory pool is determinant and when the memory pool is empty, the allocated thread can be blocked (or immediately return, or waiting for sometime to return, which are determined by a timeout parameter). When other thread releases memory blocks to this memory pool, the blocked thread is wake up.
Enhancements:
- More porting was done to Samsung S3C44b0 CPU, AMTEL AT91SAM7S64, Nintendo DS, and Intel i386.
Download (0.34MB)
Added: 2007-01-21 License: GPL (GNU General Public License) Price:
1009 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above 255 search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed