HELLO KIDS!
Today im going to make some changes into Your systems =D
Do You use Scout from shell often?, Have You noticed that
loading it from the disk everytime You need to do some
operations is slow like early calculators? ;]
Did You tried to make it resident, and it is still slow?
Haha, Follow me!
We will daemonize the Scout, so it will be running in the
background all the time plus it will be invisible for other
instances for safety reasons.
Needed things are:
- Scout in C: (http://www.aminet.net/util/moni/Scout_os3.lha)
- WaitForPort in path or move to C: (sys:Rexxc/)
- rep in C: (http://www.aminet.net/util/cli/rep.lha)
Now I will show You how to setup this thing:
"
.key QUIET/S
.bra «
.ket »
IF «QUIET»
SET consoleo NIL:
ELSE
SET consoleo CONSOLE:
ENDIF
FailAt 25
SET inexec SCOUT
SET outexec SC0UT
SET inpath C:
SET outpath T:
IF `rx "say SHOW('P','$outexec')"` EQ 1
echo "'$outexec' is already running..." >$consoleo
SKIP skipped
ENDIF
echo ":Daemonizing $inexec as '$outexec' ..." >$consoleo
echo "modyfying structure of '$inpath$inexec' and writing to '$outpath$outexec'" >$consoleo
rep $inpath$inexec scout.reply sc0ut.reply $outpath$outexec >$consoleo
echo "starting up whole thing..." >$consoleo
stack 30000
run >NIL: $outpath$outexec ICONIFIED PORTNAME=$outexec
stack 4096
WaitForPort $outexec
IF WARN
echo "failed!" >$consoleo
ELSE
echo "ready." >$consoleo
ENDIF
UNSETENV $outpath$outexec
LAB skipped
UNSET inexec
UNSET outexec
UNSET inpath
UNSET outpath
UNSET consoleo
"
If You want to insert this into Your startup-sequence and don't
want to have screen verbosity just comment out all echo's or copy
'daemonize' to C: and insert this: "execute c:daemonize QUIET".
You can also insert this after TCP/IP stack and add some
network related args so that it will be possible to control
Your Amiga from another Amiga running Scout in GUI mode.
TECH: this changes the invoke method of Scout from:
`scout command=tasks`
to:
`rx "c='T:T';ADDRESS SC0UT; 'printlist T 'c;
a=OPEN(b,c,'R');say READCH(b,65535);
a=CLOSE(b);a=DELETE(c)`
funny thing is that, that this is not funny ;]
,only requesting lists is such a crap, but
there are utils I made to get this easier so relax.
BTW: see Scout docs on how to use ARexx interface.
Features(what You gain by doing this):
- speeEEEEEEd!
- non-limited access, even in low memory situations
Utils(My very handy ARexx scripts for use with Scout):
requirements:
- rexxsupport.library (system)
- rmh.library (http://www.aminet.net/util/rexx/rmh.lha)
- RexxMast (system)
- rx, execute in path or in C:
- +s bit on script files for command-like invoking
utils(scripts):
- dump -allows to see any list just by typing one char
- signalize -signal tasks [massively]
- rexxpriset -change priority [massively]
- rexxbreak -term. tasks [massively]
- termgen -terminates tasks mainly launched by You
- rxterm -very basic ARexx port terminator (non-Scout)
NOTE: These scripts work actually without daemonizing, but
everything is kinda slowwwww coz Scout needs to be
loaded from the disk everytime some function
of it is being requested...
dump (help: '--help')
=======================
"
template: dump [list/K],[word/K],[col/N],[ic/S]
examples: dump ,CON,, | dump t,CON,8 | dump t,CON,,ic
[list/K]:
Allocations (a), BoopsiClasses (b), Commands (c), Devices (d),
Timer (e), Fonts (f), Assigns (g), InputHandlers (h), Interrupts
(i), LowMemory (j), Commodities (k), Libraries (l), Memory (m),
Mounts (n), Locks (o), Ports (p), Residents (r), Semaphores (s),
Tasks (t), Resources (u), Vectors (v), Windows (w), Expansions
(x), System (y) and ScreenMode (z). + Timer (1), Patches (2).
NOTE: last two entries r only accessible through the task
"
- [word/K] - allows to scan for particular word(s)
- [col/N] - searches in specified column only,
THIS ARGUMENT IS DYNAMIC IN SOME WAY
AND HAS RANGE EQUAL TO THAT FROM THE LIST,
0=all cols, like: ,word,0 = ,word,, = ,word
- [ic/S] - ignore case
NOTE: when invoked with no args tasks will be shown by default,
You can change this by editing 'dump' - 'dflt_list' var.
signalize (help: no args)
===========================
"
template: signalize <[--LIST]/'[TNAME]/[TADDR],...'> [[--INT]/[HEXSIGNAL]]
"
ex.1: signalize input.device
ex.2: signalize input.device --int
ex.3: dump t,input,,ic
$0108CF62 task 20 --- ready $C0000000 4.006 input.device
signalize $0108CF62 $C0000000
ex.4: signalize --list
Using internal signal: $1FFF6FFF
$015F6400 process 19 20 ready $00000100 3.798 Background CLI [c:fscreen.exec]
$015F9588 process 68 18 waiting $B4001000 7.898 Background CLI [powerwindows]
$016FDAA0 process 5 --- waiting $C0001000 9.798 DepthMenu
$0108CF62 task 20 --- ready $C0000000 4.006 input.device
$01787970 process 5 --- waiting $8C001000 7.990 magicmenu_AL
$015E8550 process 0 --- wait dos $00000100 3.802 MCP_TitleClock
$010B0200 process 0 --- waiting $80000000 1.838 ramlib
$01802DA8 process 2 26 waiting $E0000000 3.866 ToolsDaemon [ToolsDaemon]
$0172F2C8 process 1 23 waiting $80000000 5.830 Workbench [Workbench]
$01415D98 process 0 --- waiting $80000000 2.802 « ConClip »
- $1FFF6FFF usually breaks the internal loop, when process
hangs unexpectedly and might cause heavy CPU load.
In such cases use 'rexxpriset' to lower its priority and
then try to 'signalize' -helps in most cases after
two or more attempts.
ex.5: signalize ARexx,[rx]
Using corresponding signals.
$0143FFA0 process 0 --- waiting $C0000000 3.702 ARexx
$01825C20 process 0 --- waiting $C0000000 3.702 ARexx
$0182D5D8 process 0 --- waiting $C0000000 3.702 ARexx
$01454008 process 0 --- waiting $C0000000 3.702 ARexx
$0144CBE8 process 0 --- waiting $C0000000 3.702 ARexx
$01C1F7D8 process 0 --- waiting $80000000 3.730 ARexx
$0141ABB8 process 0 9 waiting $70001000 ---ackground CLI [c:InfraRexxDaemon]
$0143CD38 process 0 10 wait dos $00000100 3.738 Background CLI [rx]
$0144AAC8 process 0 7 wait dos $00000100 3.738 Background CLI [rx]
$014518B8 process 0 12 wait dos $00000100 3.738 Background CLI [rx]
$018230D0 process 0 27 wait dos $00000100 3.738 Background CLI [rx]
$018270E0 process 0 28 wait dos $00000100 3.738 Background CLI [RX]
$01847018 process 0 39 wait dos $00000100 3.738 Shell Process [RX]
-You can edit 'signalize' file to set Your own default
tasks to be signalized('--list'), useful in deadlock situations,
You might want to buttonize this in some program or use with infrared
or invoke from remote terminal.
NOTE: using '--list' without daemonized Scout its senseless.
rexxbreak (help: 'help' or '?')
=================================
"
REXXBREAK by megacz 2k6
usage: rexxbreak <TASKNAME> [IC] [MASS]
"
rexxpriset (help: 'help' or '?')
==================================
"
REXXPRISET by megacz 2k6
usage: rexxpriset <TASKNAME> <PRI> [IC] [MASS]
"
example: rexxpriset ARexx -1 mass
$0143FFA0 process -1>-1 --- waiting $C0000000 3.702 ARexx
$0182D5D8 process -1>-1 --- waiting $C0000000 3.702 ARexx
$01454008 process -1>-1 --- waiting $C0000000 3.702 ARexx
$01825C20 process -1>-1 --- waiting $C0000000 3.702 ARexx
$0144CBE8 process -1>-1 --- waiting $C0000000 3.702 ARexx
$01DE3A78 process 0>-1 --- waiting $80000000 3.730 ARexx
termgen (help: no args)
=========================
"
template: termgen [FORCE]/[DUMP [UNBUF]]
"
-There are two files needed:'env:TERMGEN.exclude' & 'env:TERMGEN.rexxexcl'
they should contain tasks You don't want to terminate, like system
processes, patches, clocks, menus...
First one contains tasknames and the second ports.
ITS RECOMMENDED FIRST TO SEE ('DUMP') WHAT WILL BE TERMINATED BEFORE
GOING WITH 'FORCE' -termination.
rxterm (help: 'help' or '?')
==============================
"
template: PRGNAME,PERIODIC/S
"
- PRGNAME is ARexx port to be terminated, case sensitive!,
for more details launch editor and check out how it looklikes.
Additional NOTES:
-----------------
I found that using 'ixpipe-handler' which size is 2532 causes troubles
when requesting Scout mounts('dump n'), use 30152 version from ixemul48.2.
HAVE FUN.
deemon -daemonizing Scout by megacz2k6(megacz@usa.com), 07-08-2006
|