diff --git a/www/devcon/IMG_4083.JPG b/www/devcon/IMG_4083.JPG new file mode 100644 index 0000000000..d6ed305045 Binary files /dev/null and b/www/devcon/IMG_4083.JPG differ diff --git a/www/devcon/IMG_4084.JPG b/www/devcon/IMG_4084.JPG new file mode 100644 index 0000000000..fedff94c8e Binary files /dev/null and b/www/devcon/IMG_4084.JPG differ diff --git a/www/devcon/IMG_4085.JPG b/www/devcon/IMG_4085.JPG new file mode 100644 index 0000000000..d592852b0d Binary files /dev/null and b/www/devcon/IMG_4085.JPG differ diff --git a/www/devcon/IMG_4086.JPG b/www/devcon/IMG_4086.JPG new file mode 100644 index 0000000000..758c6ad3fb Binary files /dev/null and b/www/devcon/IMG_4086.JPG differ diff --git a/www/devcon/IMG_4087.JPG b/www/devcon/IMG_4087.JPG new file mode 100644 index 0000000000..15846b5a9b Binary files /dev/null and b/www/devcon/IMG_4087.JPG differ diff --git a/www/devcon/IMG_4088.JPG b/www/devcon/IMG_4088.JPG new file mode 100644 index 0000000000..53c760d9aa Binary files /dev/null and b/www/devcon/IMG_4088.JPG differ diff --git a/www/devcon/IMG_4089.JPG b/www/devcon/IMG_4089.JPG new file mode 100644 index 0000000000..00dacfc742 Binary files /dev/null and b/www/devcon/IMG_4089.JPG differ diff --git a/www/devcon/bildtext.txt b/www/devcon/bildtext.txt new file mode 100644 index 0000000000..f8869f815c --- /dev/null +++ b/www/devcon/bildtext.txt @@ -0,0 +1,5 @@ +4083: Comparison between Recorder and Player +4084: Contest: Spot the development box! +4086: A stack of "virgins"! +4087: A pre-4.50 player (left) and a post-4.50 player (right). +4089: There's lots of fun to be had with these things! diff --git a/www/devcon/img4083.jpg b/www/devcon/img4083.jpg new file mode 100644 index 0000000000..e26cb18829 Binary files /dev/null and b/www/devcon/img4083.jpg differ diff --git a/www/devcon/img4083t.jpg b/www/devcon/img4083t.jpg new file mode 100644 index 0000000000..b615af2d92 Binary files /dev/null and b/www/devcon/img4083t.jpg differ diff --git a/www/devcon/img4084.jpg b/www/devcon/img4084.jpg new file mode 100644 index 0000000000..9dbd59ae86 Binary files /dev/null and b/www/devcon/img4084.jpg differ diff --git a/www/devcon/img4084t.jpg b/www/devcon/img4084t.jpg new file mode 100644 index 0000000000..31c2b6e9a7 Binary files /dev/null and b/www/devcon/img4084t.jpg differ diff --git a/www/devcon/img4085.jpg b/www/devcon/img4085.jpg new file mode 100644 index 0000000000..376a8f31ae Binary files /dev/null and b/www/devcon/img4085.jpg differ diff --git a/www/devcon/img4085t.jpg b/www/devcon/img4085t.jpg new file mode 100644 index 0000000000..52f3afe1c3 Binary files /dev/null and b/www/devcon/img4085t.jpg differ diff --git a/www/devcon/img4086.jpg b/www/devcon/img4086.jpg new file mode 100644 index 0000000000..051361c30b Binary files /dev/null and b/www/devcon/img4086.jpg differ diff --git a/www/devcon/img4086t.jpg b/www/devcon/img4086t.jpg new file mode 100644 index 0000000000..18736fecb1 Binary files /dev/null and b/www/devcon/img4086t.jpg differ diff --git a/www/devcon/img4087.jpg b/www/devcon/img4087.jpg new file mode 100644 index 0000000000..2c047babe3 Binary files /dev/null and b/www/devcon/img4087.jpg differ diff --git a/www/devcon/img4087t.jpg b/www/devcon/img4087t.jpg new file mode 100644 index 0000000000..89ed22845e Binary files /dev/null and b/www/devcon/img4087t.jpg differ diff --git a/www/devcon/img4088.jpg b/www/devcon/img4088.jpg new file mode 100644 index 0000000000..f2cb22fb65 Binary files /dev/null and b/www/devcon/img4088.jpg differ diff --git a/www/devcon/img4088t.jpg b/www/devcon/img4088t.jpg new file mode 100644 index 0000000000..520023100d Binary files /dev/null and b/www/devcon/img4088t.jpg differ diff --git a/www/devcon/img4089.jpg b/www/devcon/img4089.jpg new file mode 100644 index 0000000000..a21385f118 Binary files /dev/null and b/www/devcon/img4089.jpg differ diff --git a/www/devcon/img4089t.jpg b/www/devcon/img4089t.jpg new file mode 100644 index 0000000000..b3443677f5 Binary files /dev/null and b/www/devcon/img4089t.jpg differ diff --git a/www/devcon/index.t b/www/devcon/index.t new file mode 100644 index 0000000000..8f0e1d78e7 --- /dev/null +++ b/www/devcon/index.t @@ -0,0 +1,132 @@ +#define _PAGE_ Rockbox Developer Conference 2002 +#include "head.t" + +
![]() Comparison of Recorder and Player |
Well, almost. :-) Björn, Linus, Daniel and Kjell sat down at Linus' house +friday night (2002-04-19) with our Archoses and had a long and fruitful discussion about software design. +Here are a few things that we discussed: + +
We want to try to stick to POSIX where these exist and are practical. The +reason is simply that many people already know these APIs well. Here are a +few which haven't already been defined in the code: + +
+Contest: Spot the development box! |
We also decided that we will use the 'newlib' standard C library, +replacing some functions with smaller variants as we move forward. + +
We spent much time discussing and debating task scheduling, or the lack +thereof. First, we went with the idea that we don't really need "real" +scheduling. Instead, a simple "tree-task" system would be used: A +main-loop, a timer tick and a "bottom half" low-priority interrupt, each +with an event queue. + +
Pretty soon we realized that we will want to: + +
+A stack of "virgins"! |
At the same time, we agreed that we should not walk into the common trap +of engaging in "job splitting". That is, to split up jobs in small chunks +so they don't take so long to finish. The problem with job splitting is +that it makes the code flow very complex. + +
After much scratching our collective heads over how to make a primitive +"three-task" system be able to do everything we wanted without resorting +to complex job splitting, we finally came to the conclusion that we were +heading down the wrong road: + +
+ We need threading. ++ +
Even though a scheduler adds complexity, it makes the rest of the code so +much more straight-forward that the total net result is less overall +complexity. + +
To keep it simple, we decided to use a cooperative scheduler. That is, one +in which the threads themselves decide when scheduling is performed. The +big gain from this, apart from making the scheduler itself less complex, +is that we don't have to worry as much about making all code "multithread +safe". + +
Affording ourselves the luxury of threads, we soon identified four basic +threads: + +
Threads use message passing between them and each have a message queue +associated to it. + +
+There's much fun to be had with these things! |
In addition to the threads, we need a timer interrupt with the ability to +send messages to threads at specific intervals. This will also be used to +scan the keys of the jukebox and handle key repeat detection (when a key +has been pressed for a number of ticks). + +
None of these things are, of course, written in stone. Feel free to +comment, discuss and argue about them! + +
We are currently 89 subscribers to this list. If you want to get more +deeply involved in what's going on, I encourage you to: + +
I have written a set of guidelines for contributing code to the project. +Take a look at them in CVS or here: +CONTRIBUTING + +
/Björn + +#include "foot.t" diff --git a/www/devcon/show.cgi b/www/devcon/show.cgi new file mode 100755 index 0000000000..c8123b38e0 --- /dev/null +++ b/www/devcon/show.cgi @@ -0,0 +1,96 @@ +#!/usr/bin/perl + +use File::Basename; + +$cgi = basename $0; + +print "Content-Type: text/html\n\n"; + +$image = $ARGV[0]; + +$image =~ /img(\d+)/; + +print "
No image specified\n"; + exit; +} + +print "
$1\n"; + } + } + + + print "
\n"; + print "< Previous \n" if ( $prev ); + print "Index\n"; + if ( -f "IMG_$num.JPG" ) { + $size = int( (stat("IMG_$num.JPG"))[7] / 1024 ); + print " Fullsize ($size kB)\n"; + } + + print " Next >\n" if ( $next ); + +} + +# showing fullsize already +elsif ( $image =~ /IMG_(\d+).JPG/ ) { + $num = $1; + for $i ( 1 .. 10 ) { + $prev = sprintf("%04d",$num-$i); + last if ( -f "IMG_$prev.JPG" ); + } + if ( $prev == $num-10 ) { + undef $prev; + } + + for $i ( 1 .. 20 ) { + $next = sprintf("%04d",$num+$i); + print "\n"; + last if ( -f "IMG_$next.JPG" ); + } + if ( $next == $num+20 ) { + undef $next; + } + + print "
\n"; + print "< Previous \n" if ( $prev ); + print "Index\n"; + if ( -f "img$num.jpg" ) { + $size = int( (stat("img$num.jpg"))[7] / 1024 ); + print " Small ($size kB)\n"; + } + + print " Next >\n" if ( $next ); +} +print "