f



[9fans] Go and 21-bit runes (and a bit of Go status)

Just a heads-up to 9fans that the Go build for Plan 9 (386 or ARM) now
expects the underlying platform to be updated with the 21-bit runes
fixes from Bell Labs, the pertinent submission has been accepted and
processed.

Being up to date may not improve the build as much as one may wish,
but not being up to date is guaranteed to be a problem.

Anthony Martin is also in the process of getting another important
patch to the Go distribution approved, while there may be delays
figuring out what to do about the SSE2 extension to the Intel 386
architecture.

Regarding the latter, Plan 9 does not allow floating point
instructions to be executed within note handling, but erring on the
side of caution also forbids instructions such as MOVOU (don't ask me)
which is part of the SSE(2?) extension, but hardly qualifies as a
floating point instruction.

I have yet to see the type of suggestion for Go, but specially for
Plan 9, that resolves all future conflicts on this score: it is a
difficult bit of architectural design on both sides.  I, for one,
would be interested in plausible suggestions.  The 64-bit people may
need them even more, or maybe not at all.

++L

0
lucio
6/2/2013 10:53:37 AM
comp.os.plan9 9252 articles. 1 followers. quanstro (3876) is leader. Post Follow

30 Replies
431 Views

Similar Articles

[PageSpeed] 4

This is a multi-part message in MIME format.
--upas-wnnfksrrovlprufyikfxhroafi
Content-Disposition: inline
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

> Regarding the latter, Plan 9 does not allow floating point
> instructions to be executed within note handling, but erring on the
> side of caution also forbids instructions such as MOVOU (don't ask me)
> which is part of the SSE(2?) extension, but hardly qualifies as a
> floating point instruction.

movou (movdqu in the manual) is a sse2 data movement instruction.
not all sse2 instructions require that sse be turned on (pause, for examp=
le),
but movou uses at least one xmm register so is clearly using the sse
unit, thus requiring that it be turned on.

the go runtime memmove uses movou for memmoves between 33 and 128
bytes.  i only see a 10 cycle difference for these cases on my atom machi=
ne,
(maximum 13%), so we're not missing out on much here by not using sse.

the real win, or loss for the plan 9 memmove, is in the short memmoves.
but this is a =C2=B5benchmark, and it would be more convincing with a rea=
l
world test.

- erik

harness; 8.memmovetest
memmove
1	92.42578 cycles/op
2	81.28125 cycles/op
4	56.47266 cycles/op
8	58.32422 cycles/op
16	62.28516 cycles/op
32	70.26563 cycles/op
64	86.32031 cycles/op
128	118.3125 cycles/op
512	323.5078 cycles/op
1024	587.1094 cycles/op
4096	2119.242 cycles/op
131072	133058.5 cycles/op

rt=C2=B7memmove
1	20.60156 cycles/op
2	20.34375 cycles/op
4	24.46875 cycles/op
8	22.42969 cycles/op
16	27.45703 cycles/op
32	52.82813 cycles/op
64	79.19531 cycles/op
128	129.1289 cycles/op
512	314.4492 cycles/op
1024	569.9648 cycles/op
4096	2132.297 cycles/op
131072	135378.3 cycles/op
--upas-wnnfksrrovlprufyikfxhroafi
Content-Disposition: attachment; filename=memmovetest.c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

#include <u.h>
#include <libc.h>

typedef struct Movtab Movtab;
typedef void* (*Movfn)(void*, void*, ulong);

	u32int	runtimecpuid_edx =3D 0x4000000;
extern	void*	runtimememmove(void*, void*, ulong);

struct Movtab {
	Movfn	f;
	char	*name;
};

uvlong	hz;
int	sztab[] =3D {1, 2, 4, 8, 16, 32, 64, 128, 512, 1024, 4096, 128*1024, =
};
uchar	buf0[128*1024];
uchar	buf1[128*1024];
Movtab	movtab[] =3D {memmove, "memmove",  runtimememmove, "rt=C2=B7memmov=
e", };
//Movfn	movtab[] =3D {memmove, runtimememmove};

uvlong
gethz(void)
{
	char buf[1024], *f[5];
	int n, fd;

	fd =3D open("/dev/time", OREAD);
	if(fd =3D=3D -1)
		sysfatal("%s: open /dev/time: %r", argv0);
	n =3D pread(fd, buf, sizeof buf-1, 0);
	if(n <=3D 0)
		sysfatal("%s: read /dev/time: %r", argv0);

	buf[n] =3D 0;
	n =3D tokenize(buf, f, nelem(f));
	if(n < 4)
		sysfatal("%s: /dev/time: unexpected fmt", argv0);

	return strtoull(f[3], 0, 0);
}

void
inner(Movfn f, ulong sz)
{
	int i;

	for(i =3D 0; i < 1024; i++)
		f(buf1, buf0, sz);
}

void
main(int argc, char **argv)
{
	int i, j;
	uvlong t[2], c[nelem(movtab)][nelem(sztab)];
//	double dhz;
	Movfn f;

	ARGBEGIN{
	}ARGEND

	hz =3D gethz();
//	dhz =3D hz;

	for(i =3D 0; i < 2; i++){
		print("%s\n", movtab[i].name);
		f =3D movtab[i].f;
		for(j =3D 0; j < nelem(sztab); j++){
			cycles(t + 0);
			inner(f, sztab[j]);
			cycles(t + 1);
			c[i][j] =3D t[1] - t[0];

			print("%d	%g cycles/op\n", sztab[j], c[i][j]/1024.);
			sleep(0);
		}
		print("\n");
	}

	exits("");
}
--upas-wnnfksrrovlprufyikfxhroafi
Content-Type: multipart/mixed;
	boundary="upas-mfqjrtepgmkpqtrwftyogceoyk"
Content-Disposition: inline

This is a multi-part message in MIME format.
--upas-mfqjrtepgmkpqtrwftyogceoyk
Content-Disposition: inline
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit

from postmaster@kw:
The following attachment had content that we can't
prove to be harmless.  To avoid possible automatic
execution, we changed the content headers.
The original header was:

	Content-Disposition: attachment; filename=memmove_386.s
	Content-Type: text/plain; charset="UTF-8"
	Content-Transfer-Encoding: 8bit
--upas-mfqjrtepgmkpqtrwftyogceoyk
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="memmove_386.s.suspect"

// Inferno's libkern/memmove-386.s
// http://code.google.com/p/inferno-os/source/browse/libkern/memmove-386.s
//
//         Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
//         Revisions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com).  All rights reserved.
//         Portions Copyright 2009 The Go Authors. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#define MOVOU	MOVDQU

TEXT runtimememmove(SB), $0
	MOVL	to+0(FP), DI
	MOVL	fr+4(FP), SI
	MOVL	n+8(FP), BX

	// REP instructions have a high startup cost, so we handle small sizes
	// with some straightline code.  The REP MOVSL instruction is really fast
	// for large sizes.  The cutover is approximately 1K.  We implement up to
	// 128 because that is the maximum SSE register load (loading all data
	// into registers lets us ignore copy direction).
tail:
	TESTL	BX, BX
	JEQ	move_0
	CMPL	BX, $2
	JBE	move_1or2
	CMPL	BX, $4
	JBE	move_3or4
	CMPL	BX, $8
	JBE	move_5through8
	CMPL	BX, $16
	JBE	move_9through16
	TESTL	$0x4000000, runtimecpuid_edx(SB) // check for sse2
	JEQ	nosse2
	CMPL	BX, $32
	JBE	move_17through32
	CMPL	BX, $64
	JBE	move_33through64
	CMPL	BX, $128
	JBE	move_65through128
	// TODO: use branch table and BSR to make this just a single dispatch

nosse2:
/*
 * check and set for backwards
 */
	CMPL	SI, DI
	JLS	back

/*
 * forward copy loop
 */
forward:	
	MOVL	BX, CX
	SHRL	$2, CX
	ANDL	$3, BX

	REP;	MOVSL
	JMP	tail
/*
 * check overlap
 */
back:
	MOVL	SI, CX
	ADDL	BX, CX
	CMPL	CX, DI
	JLS	forward
/*
 * whole thing backwards has
 * adjusted addresses
 */

	ADDL	BX, DI
	ADDL	BX, SI
	STD

/*
 * copy
 */
	MOVL	BX, CX
	SHRL	$2, CX
	ANDL	$3, BX

	SUBL	$4, DI
	SUBL	$4, SI
	REP;	MOVSL

	CLD
	ADDL	$4, DI
	ADDL	$4, SI
	SUBL	BX, DI
	SUBL	BX, SI
	JMP	tail

move_1or2:
	MOVB	(SI), AX
	MOVB	-1(SI)(BX*1), CX
	MOVB	AX, (DI)
	MOVB	CX, -1(DI)(BX*1)
move_0:
	RET
move_3or4:
	MOVW	(SI), AX
	MOVW	-2(SI)(BX*1), CX
	MOVW	AX, (DI)
	MOVW	CX, -2(DI)(BX*1)
	RET
move_5through8:
	MOVL	(SI), AX
	MOVL	-4(SI)(BX*1), CX
	MOVL	AX, (DI)
	MOVL	CX, -4(DI)(BX*1)
	RET
move_9through16:
	MOVL	(SI), AX
	MOVL	4(SI), CX
	MOVL	-8(SI)(BX*1), DX
	MOVL	-4(SI)(BX*1), BP
	MOVL	AX, (DI)
	MOVL	CX, 4(DI)
	MOVL	DX, -8(DI)(BX*1)
	MOVL	BP, -4(DI)(BX*1)
	RET
move_17through32:
	MOVOU	(SI), X0
	MOVOU	-16(SI)(BX*1), X1
	MOVOU	X0, (DI)
	MOVOU	X1, -16(DI)(BX*1)
	RET
move_33through64:
	MOVOU	(SI), X0
	MOVOU	16(SI), X1
	MOVOU	-32(SI)(BX*1), X2
	MOVOU	-16(SI)(BX*1), X3
	MOVOU	X0, (DI)
	MOVOU	X1, 16(DI)
	MOVOU	X2, -32(DI)(BX*1)
	MOVOU	X3, -16(DI)(BX*1)
	RET
move_65through128:
	MOVOU	(SI), X0
	MOVOU	16(SI), X1
	MOVOU	32(SI), X2
	MOVOU	48(SI), X3
	MOVOU	-64(SI)(BX*1), X4
	MOVOU	-48(SI)(BX*1), X5
	MOVOU	-32(SI)(BX*1), X6
	MOVOU	-16(SI)(BX*1), X7
	MOVOU	X0, (DI)
	MOVOU	X1, 16(DI)
	MOVOU	X2, 32(DI)
	MOVOU	X3, 48(DI)
	MOVOU	X4, -64(DI)(BX*1)
	MOVOU	X5, -48(DI)(BX*1)
	MOVOU	X6, -32(DI)(BX*1)
	MOVOU	X7, -16(DI)(BX*1)
	RET
--upas-mfqjrtepgmkpqtrwftyogceoyk--

--upas-wnnfksrrovlprufyikfxhroafi--

0
quanstro
6/2/2013 2:10:00 PM
> Regarding the latter, Plan 9 does not allow floating point
> instructions to be executed within note handling, but erring on the
> side of caution also forbids instructions such as MOVOU (don't ask me)
> which is part of the SSE(2?) extension, but hardly qualifies as a
> floating point instruction.

The reason for FP being forbidden in note handler is that the kernel only saves
the general purpose (Ureg) registers of the interrupted/notified process
context. The fp or xmm registers are *not* saved and a note handler modifying
those (thru fp instructions or sse instructions) would trash these registers
for the program interrupted by the note.

you could save the ureg, and jump out of the note handler with notejmp(),
save the fp/sse registers yourself and then do the handling of the note
outside of the note context. (this is how signals are implemented in ape).

or we change the kernel to save the fp registers in notify() as well,
pushing them on the user stack and restoring them on noted() just like
the Ureg.

or GO could just stop using *OMG-OPTIMIZED* SSE memmove() in the note
handler.

--
cinap

0
cinap_lenrek
6/2/2013 3:01:15 PM
> or GO could just stop using *OMG-OPTIMIZED* SSE memmove() in the note
> handler.

But it would not stop users from doing so, so at minimum we'd have to
detect the abuse and report it, rather than crash.

Saving the entire register space would be expensive for all
well-behaved processes and avoiding the micro-optimisation in
memmove() (a Plan 9-specific option) would be my recommendation.  But
dragons do lurk and will need to be slain.

Incidentally, do the FP registers need to be saved for the sake of
MOVOUs?  Or should I ask whether MOVOUs clobber registers not saved
before note handling?

++L

0
lucio
6/2/2013 3:22:31 PM
> movou (movdqu in the manual) is a sse2 data movement instruction.
> not all sse2 instructions require that sse be turned on (pause, for example),
> but movou uses at least one xmm register so is clearly using the sse
> unit, thus requiring that it be turned on.

I see Erik answers my question: xmm registers may be clobbered.  I
suppose they could be saved in the Go runtime, if absolutely
essential?

++L

0
lucio
6/2/2013 3:24:30 PM
the saving isnt the problem. the kernel already flushes the fp registers
to the process fpsave area on notify. its just that we do *not* copy
the registers to the user stack, but save them in the process fpsave
area.

as theres just just one fpsave area in the process, and not one for
notes and one for normal code, note handler is forbitten to use fp again.

its not for the sake of movou. its for the sake of the process interrupted
by the note.

say, you have a programm that gets just interrupted by note while in
that omgoptimized sse memmove() where it just loaded some chunks into
XMM0 register, and then the note fires.

then the note handler does memmove itself modifying XMM0 itself loading
it with something completely different. then note handler finishes
continuing the original programm, then XMM0 would contain the garbage
from the note handler! it would look for the program like if registers
randomly change under it!

--
cinap

0
cinap_lenrek
6/2/2013 3:38:19 PM
> then the note handler does memmove itself modifying XMM0 itself loading
> it with something completely different. then note handler finishes
> continuing the original programm, then XMM0 would contain the garbage
> from the note handler! it would look for the program like if registers
> randomly change under it!

True enough.  If memmove() were the only problem, solving it would be
easy.  One option: drop MOVOU altogether; another option: save xmm8
(following from what you said).  But it's the whole FP edifice that's
relevant in the bigger picture: it may be bad practice, but what if I
want to compute the next iteration for pi in a note handler?  How is
the Go runtime going to stop me, or at least make sure I am aware that
I should not be doing it rather than give me an incorrect answer that
I then use to fire a ballistic missile at the wrong target?

(I concede that I have not thought about this much - feel free to
think you have to explain this to an idiot.)

++L

0
lucio
6/2/2013 3:54:14 PM
On Sun, Jun 02, 2013 at 05:54:14PM +0200, lucio@proxima.alt.za wrote:
> I should not be doing it rather than give me an incorrect answer that
> I then use to fire a ballistic missile at the wrong target?


I knew Google was up to something.

khm

0
khm
6/2/2013 3:59:28 PM
> I knew Google was up to something.

Google?  Who's Google?

++L

0
lucio
6/2/2013 4:08:45 PM
cinap_lenrek@gmx.de once said:
> or GO could just stop using *OMG-OPTIMIZED* SSE memmove()
> in the note handler.

This is exactly what I did in my patch. This was just
a regression. Someone changed memmove a few weeks ago.

Nothing to see here.

  Anthony

0
ality
6/2/2013 7:37:44 PM
> I see Erik answers my question: xmm registers may be clobbered.  I
> suppose they could be saved in the Go runtime, if absolutely
> essential?

no, they can not.  saving registers is something that is done on
context switch by the scheduler, and the go runtime is not
involved in context switching; this is a user-level transparent thing.

there are things that could be done.  but before getting radical in a
hurry, is there any place other than runtime=C2=B7memmove() that
would use sse in a note handler?

- erik

0
quanstro
6/3/2013 4:20:36 AM
> there are things that could be done.  but before getting radical in a
> hurry, is there any place other than runtime=C2=B7memmove() that
> would use sse in a note handler?

I presumed, perhaps incorrectly, that users are allowed to write their
own signal handlers and are not prohibited from using floating point
instructions in them.

++L

0
lucio
6/3/2013 5:38:47 AM
I have applied Anthony's CL 9796043 together with some tweaks to
pkg/runtime/sys_plan9_386.s which I will pass on to Anthony as soon as
I can; this has made it possible to complete the first set of run.rc
tests without the major incidents I used to see.  Some tests still
fail, but I wasn't expecting miracles: I believe Anthony (and maybe
others) are still working on changes I am not familiar with.

Still, I think I can report some progress, specially towards being
able to run a Go builder for the Plan 9/386 platform.  What we are
going to do about builders for the various offshoots I can't tell.

++L

0
lucio
6/3/2013 5:48:30 AM
On Mon Jun  3 01:39:33 EDT 2013, lucio@proxima.alt.za wrote:
> > there are things that could be done.  but before getting radical in a
> > hurry, is there any place other than runtime=C2=B7memmove() that
> > would use sse in a note handler?
>=20
> I presumed, perhaps incorrectly, that users are allowed to write their
> own signal handlers and are not prohibited from using floating point
> instructions in them.

there are no signals in plan 9.  i assume that you mean note handlers.

note handlers may be user set but may not do floating point.
see notify(2) for documentation.

as cinap pointed out, this is because the fp save area for the process
is (potentially) busy when the note is delivered.  think of it this way
here up =3D user process.  this is the kernel convention.  some details
of this are slightly incorrect for clarity.

user			kernel
generates fault
			saves up registers,
			saves up floating point, sets fp state to FPillegal
				the save area is already used.
starts note handler
generates fp fault
			saves up registers,
			finds that we're in FPillegal state, and process
			becomes Broken

- erik

0
quanstro
6/3/2013 1:28:07 PM
> starts note handler
> generates fp fault
> 			saves up registers,
> 			finds that we're in FPillegal state, and process
> 			becomes Broken

That conflicts with Go's intent, I've no idea how one addresses it.
Ideally, the kernel should trigger a condition that the Go runtime can
deal with.  I can see why it is unlikely.

++L

0
lucio
6/3/2013 4:34:47 PM
On Mon Jun  3 12:35:40 EDT 2013, lucio@proxima.alt.za wrote:
> > starts note handler
> > generates fp fault
> > 			saves up registers,
> > 			finds that we're in FPillegal state, and process
> > 			becomes Broken
> 
> That conflicts with Go's intent, I've no idea how one addresses it.
> Ideally, the kernel should trigger a condition that the Go runtime can
> deal with.  I can see why it is unlikely.

if by intent, you mean that go is using xmm registers as if they were
general purpose registers, then the solution is to stop doing that.
and there's such a patch already.

- erik

0
quanstro
6/3/2013 4:46:10 PM
> if by intent, you mean that go is using xmm registers as if they were
> general purpose registers, then the solution is to stop doing that.
> and there's such a patch already.

No, Go's intent is to minimise runtime surprises.  It is possible to
define signal (calling them notes does not change their nature)
handlers and nothing in the Go specifications compels the user not to
use floating point instructions in such handlers.  It would also not
be possible to enforce such restrictions in known implementations of
Go and that creates a conflict.  Unless I'm straying into areas I am
ignorant of, something needs to be done for Go and Plan 9 to coexist
amicably, the current conditions are prone to Go-incompatible
behaviour.

Solving the memmove() problem just puts the crisis off for a while.
Once Go is being used on Plan 9 and especially if a user expects
portability from more common platforms, this particular
incompatibility is likely to hurt.

++L

0
lucio
6/3/2013 5:04:30 PM
On Mon Jun  3 13:05:07 EDT 2013, lucio@proxima.alt.za wrote:
> > if by intent, you mean that go is using xmm registers as if they were
> > general purpose registers, then the solution is to stop doing that.
> > and there's such a patch already.
> 
> No, Go's intent is to minimise runtime surprises.  It is possible to
> define signal (calling them notes does not change their nature)
> handlers and nothing in the Go specifications compels the user not to
> use floating point instructions in such handlers.  It would also not
> be possible to enforce such restrictions in known implementations of

signals are not compatable with notes.  i don't think this
can be truely portable code anyway.

- erik

0
quanstro
6/3/2013 5:07:13 PM
On Jun 3, 2013, at 10:07 AM, erik quanstrom <quanstro@quanstro.net> wrote:

> On Mon Jun  3 13:05:07 EDT 2013, lucio@proxima.alt.za wrote:
>>> if by intent, you mean that go is using xmm registers as if they were
>>> general purpose registers, then the solution is to stop doing that.
>>> and there's such a patch already.
>>=20
>> No, Go's intent is to minimise runtime surprises.  It is possible to
>> define signal (calling them notes does not change their nature)
>> handlers and nothing in the Go specifications compels the user not to
>> use floating point instructions in such handlers.  It would also not
>> be possible to enforce such restrictions in known implementations of
>=20
> signals are not compatable with notes.  i don't think this
> can be truely portable code anyway.

Not compatible but signals have similar restrictions. A signal may be delive=
red at any time where any state maintained in usercode may be inconsistent. I=
n particular use of any non-reentrant function can cause trouble. Used to be=
, you don't use floating pt. in signal handlers as that would require the ke=
rnel to save more state, slowing down signal delivery, or it could cause ano=
ther trap where the kernel can do the lazy saving trick. Most mallocs are no=
n reentrant as well and you shouldn't use malloc in a handler. All in all a v=
ery restricted environment.=20=

0
bakul
6/3/2013 5:33:21 PM
--001a11c2443cb9c4e804de436efd
Content-Type: text/plain; charset=UTF-8

On 3 June 2013 18:04, <lucio@proxima.alt.za> wrote:

> No, Go's intent is to minimise runtime surprises.


It's not a runtime surprise to Go programmers, since no ordinary Go code
runs in that note handler.
There's a rather elaborate implementation to convert notes (or signals)
into something acceptable
to the rest of the Go runtime. It does as little as it can.

--001a11c2443cb9c4e804de436efd
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">=
On 3 June 2013 18:04,  <span dir=3D"ltr">&lt;<a href=3D"mailto:lucio@proxim=
a.alt.za" target=3D"_blank">lucio@proxima.alt.za</a>&gt;</span> wrote:<br><=
blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px=
 #ccc solid;padding-left:1ex">
No, Go&#39;s intent is to minimise runtime surprises. =C2=A0</blockquote></=
div><br>It&#39;s not a runtime surprise to Go programmers, since no ordinar=
y Go code runs in that note handler.</div><div class=3D"gmail_extra" style>=
There&#39;s a rather elaborate implementation to convert notes (or signals)=
 into something acceptable</div>
<div class=3D"gmail_extra" style>to the rest of the Go runtime. It does as =
little as it can.</div></div>

--001a11c2443cb9c4e804de436efd--

0
charles
6/3/2013 5:38:28 PM
Linuxemu runs all its linux api emulation inside a note handler,
now it does no specific SSE code (its the linux SSE code that was
troublesome here), but if there are any sse library functions in
plan9 (like memmove) then linuxemu may run them from a note handler.

Just an opinion from a different side.

-Steve

0
steve
6/3/2013 5:53:12 PM
Reply:

Similar Artilces:

Going... Going... Going...
It seems that a lot of my List-O-Wares has been claimed. Will update ASAP Evif wrote: > > It seems that a lot of my List-O-Wares has been claimed. Will update ASAP Rather than "spamming" this group, why not keep your posts confined to ONE thread, hey ?!?! ...

Go Vista Go!!! GO GO!!
Vista the number 1 selling OS of ALL TIME!!!!!!!!!!! wooohoooooooooooo Welcome to comp.sys.vista.envy Enjoy your stay! ...

[9fans] 21-bit runes
We are converting the system to 21-bit runes (also known as 32-bit runes, but only 21 bits are ever used). The first step will be pushing out versions of a few commands and library routines that have been modified to be agnostic about Rune size. The next step is recompiling the compilers and pushing changed header files and libraries to cope with larger Runes. Finally you'll want to recompile your world (including your kernels) or wait and pull new ones from sources. We don't expect many visible changes as a result of all this, but note that threaded programs that contain automatic arrays of Runes may need larger stacks. Thank you. I very much appreciate the work that went into this. And thanks to Erik for his previous set of patches. Anthony ...

bogo no go, has mogo on the go-go-go
No luck here trying to get Doug Bissett's bogofilter add-on working in my PMMail installation. I'm sure it's a simple directory error -- at first I tried to install it *inside* my SOUTHSDE\TOOLS directory, but after that didn't work, I realized that the different directory structures of PMMail dictated another strategy. So, I created another directory to more closely mimic what the README suggested, and moved everything over there, like so: F:\SOUTHSDE <dir>User_Tools <dir>TOOLS <dir>PMMAIL User_Tools contains <dir>BOGOFI...

bits of this, bits of that
Hi, I need to write some data types into an array of unsigned chars. These are basically "signals" within a message, so each signal will have a start bit and a length. The signals will also have a type, one of: unsigned long signed long float double The signals with float and double will be 32 or 64 bits long, as appropriate. I need to just shift the bits and throw them into the array, untouched. Whats the best way of doing this? Since I can't bit shift a float around, I was thinking of a union of the 4 types, and doing all the bit twiddling using the ...

where did all them bits go ?
I guess 4034 and 4035 are missing information on where exactly the CD and AD bits reside in the DNS header. Its specified in rfc2535, but omitted in the current drafts, which obsolete 2535. I'll send text. Roy -- to unsubscribe send a message to namedroppers-request@ops.ietf.org with the word 'unsubscribe' in a single line as the message text body. archive: <http://ops.ietf.org/lists/namedroppers/> ...

Going up or going down?
I've noticed that when Maccies see a PC for the same price of an eMac, that thoroughly outclasses the eMac, they start ramping down the home users' requirements to browsing the Web and email. When a PC is pointed out for half the price of the eMac, that can surf the Web and handle email just fine, they start ramping up to Firewire, DVD burning, and media creation. Top it all off with the bogus claim there's no price difference worth mentioning between PCs and Macs... -- Edwin On Tue, 01 Jun 2004 16:44:50 GMT, "Edwin" <thorne25@juno.com> chose to bless u...

To go or not to go?
Here we use Filemaker to manage our databases. Now we were interested in evaluating filemaker to go to use it eventually on an IPAD (which still we don't have). Before buying, however, I want to understand a few issues which the website didn't answer me (it's just marketing and vapor-ware there). The first problem is about the synchronization of the data. Is it still true that fm-to-go doesn't let you modify or create new records? That is not the end of the world, and it might even be fine. But we have a lot of databases (> 30 probably) and I would like to synchronize t...

Is it possible to go from 12 bit grayscale to 24 bit RGB?
Within the same grab acquisition, is there a way to switch between acquiring 12 bit grayscale images and RGB images? For instance,&nbsp;in one grab I would acquire a grayscale image and then in the next cycle acquire a RGB image. I am trying to keep my dynamic range as wide as possible and thus, would like to avoid acquiring in RGB and transforming my image to grayscale. &nbsp; To acquire 12 bit grayscale images, I know I have to first acquire in 16 bit using IMAQ Create to designate the image type. However for the RGB images, I designate the image type in IMAQ Create as 8 bit for each...

Going from 32 bit Fortran mex to 64 bit.....(OSX)
Hi All, After very much difficulty, and manual editing of the mexopts.sh, and all that stuff provided by very kind people on this forum, finally, I have a mex file that I have been using for years on 32 bit systems, compiling in 64 bit on Mac OSX (R2010bsp1), using gfortran. Now, the trouble is, as soon as I try to run that mex file, Matlab doesn't give me a segmentation fault, or complain gracefully as I'm used to with these kinds of things, it just crashes and disappears completely. I'm a matlab programmer though, guys, not a fortran one. So I'm hoping that if I post my me...

Going...., going.......
The day job is starting to encroach on the PS/2 side so I'm thinning the ranks a bit. Even my spare "y" complex !! :-( See user " Tomdhu " on EPay. Items:- 2782079933 2781866553 2782080557 3454581044 3454580275 2781868119 Good luck ...

32 bit or 64 bit Oracle on 64 bit OS?
Hello, Currently our environment is on 10g Release 2, OS windows 2000/2003 standard edition 32 bit. We use shared server to take advantage of scalability and connecting maximum no of simultaneous connections to the database. Now we take advantage of memory beyond 4GB we are planning to check following. 64 bit Windows 2003 standard edition on AMD64/EM64T Servers. Do we need to install 64 bit Oracle as well? Do we need to reinstall Oracle clients with 64 bit installable if Oracle Server is upgraded to 64 bit? Is 32 bit Oracle is certified on 64 bit OS? Do we need to take care of any other ...

[9fans] cores a go go
i rerolled the atom cd today with some noticable changes for mp systems. 1. apic handling has changed. the mp code can now handle apic ids > 7. this can affect machines with fewer than 8 cores, especially intel 2xxx-series and xeon 56xx-series processors. 2. the apic code has a hack to find intel ht processors, even when there is no mp table entry. (as per usual.) you might see twice as many cores. 3. msi interrupts are now the default. see apic(3). http://www.quanstro.net/magic/man2html/3/apic this has been tested on a variety of phenom ii, opteron c32, intel 5[56]xx. intel cor...

Space needed IBM PS/2 MCA Bits Clearout. all must go or going for scrap.
Space needed IBM PS/2 MCA Bits Clearout. all must go or going for scrap. IBM PS/2 MCA Machines PS/2 Models 55/70/80/85/90/95 and a very early IBM Portable, non working, with 2 built in floppy disc drives PS/2 Model 70 has 80486DX-20 Processor and 16Mb Ram on Acculogic SIMMply-RAM/32bit expansion card and 120Mb HDD IBM PS/2 MCA Spares 1x Acculogic SIMMply-RAM/16 Memory Expansion Card 1x Quadrameg PS/Q Memory Adapter VR1 Enhanced Mode (PR1) Adapter ID 76DA 1x IBM 2-8Mb 80286 Memory Expansion Card Adapter ID F7F7 1x IBM PS2 80 System Memory Card Part No. 90X8670 2x IBM Token Ring Adapter 16/4 Adapter ID E001 2x IBM ST506 Fixed Disk Controller Adapter ID DFFD 1x Mountain 16 Bit SCSI Host Adapter Adapter ID 7DDE IBM XGA-2 Adapter ID 8FDA Anyone interested in any of these parts or machines, make me an offer. I am based in Harrow near London UK Reply by e-mail or phone +44(0)7956 670312 Tony Please reply to Tonyabl@aol.com or Call 07956 670 312 ...

When a 32-bit OS is 37% faster than a 64-bit OS
http://biz.yahoo.com/bw/061003/20061003005999.html?.v=1 CHICAGO--(BUSINESS WIRE)--Neal Nelson & Associates, a Chicago area computer performance consulting firm, has announced test results that show a possible 37 percent throughput advantage when a Web-based application is run under the 32-bit version of SUSE Linux Enterprise Server 10 from Novell, in comparison to the same machine running a 64-bit version of SUSE Linux Enterprise Server 10. The tests were run on a computer configured with two AMD Opteron 64-bit processors. In comp.os.linux.advocacy, Larry Qualig <lqualig@uku.co.uk&g...

Exit status bits and signal bits/portions of the termination status
Hi - I was wondering: suppose a process makes an invalid memory reference thus generating a SIGSEGV signal in response to which the process terminates, what would the exit status of the termination status contain -- given that the process did not call the return statement or the exit function. Zero? or some default value? Thanks, - Olumide "Olumide" <50295@web.de> writes: > I was wondering: suppose a process makes an invalid memory reference > thus generating a SIGSEGV signal in response to which the process > terminates, what would the exit status of the termina...

Go GO GO !!!Sand beach
Happy new year! The celebration new year soon arrival, Our company promotes thegrand expense, so long as the customer spend 99usd, may select and purchase a coat in the shop, a pair of pants, with a pair of shoe, leteach person's Christmas all are such joy A:1shoes+1cloth+1jeans=99usd B:1shoes+1cloth+1jeans+1handbag=119usd C:12product(shoes,cloth,jeans)=319 usd and send the beijing olympic games souvenir's gift for free. please visit this site: www.silkonroad.com Email: chinasilkroad@hotmail.com MSN: chinasilkroad@hotmail.com YayooID: silkonroad@yahoo.cn ...

64 bit or 32 bit OS
I have a preinstalled solaris machine, $ uname -a SunOS sun_machine 5.9 Generic_117171-07 sun4u sparc SUNW,Ultra-Enterprise $ uname -X System = SunOS Node = sun_machine Release = 5.9 KernelID = Generic_117171-07 Machine = sun4u BusType = <unknown> Serial = <unknown> Users = <unknown> OEM# = 0 Origin# = 1 NumCPU = 2 1. how to know whether the OS is 32-bit or 64-bit? and whether the release is Maintenance Update 5 or later? or earlier? 2. how to limit the sizes of varios log files ? Thanks. "newbie" <cd@hotmail.com> wrote in message news:dtmab3$fdt$1...

32 Bit or 64 Bit OS?
At first I thought if I had 64 bit hardware the best server performance would be had with 64 bit operating system. Now I am not sure because I have read about far greater memory usage for the same task on a 64 bit OS. I am seeking opinions on whether to have a 32 bit or 64 bit OS in my situation. The Hardware is an Intel Xeon processor. The server is a VPS with 512 MB allocated. The OS will be a guest of XenServer. The website will be run by Drupal which requires the execution of lot of PHP code and several database queries for each web page served. Memcached, XCache and Fast ...

RE: where did all them bits go ?
Yeah, I think Sam W mentioned this to me at some point as well. I remember earlier versions of the text had them included, but disappeared in the rewrites. I think because it was in the records draft, and we forgot to move it, but I'm not sure. The IANA registry for DNS header bits does include the CD and AD positions, but an implementor would only know that if they consulted the IANA registry as well as the spec. Also, the IANA reference for the bits is still given as the dnssec-protocol draft and not the RFC... oops. > -----Original Message----- > From: owner-name...

Bits going cheap...
I have the following for disposal: 70 W PSU (working as far as I know) 2nd slice for a Risc PC (no pins for it though) 8 3�" disk boxes If anyone is interested, let me know by tonight because I can take them to the South West Show tomorrow. -- John newsmcc@blueyonder.co.uk j dot mccartney atte blueyonder dot co dot uk http://www.jm689.pwp.blueyonder.co.uk/ ...

runescape gold for sale,go!go!go!
If you have enough time, you can earn it in Runescape just by yourself! If you have no, Pls go to a honesty website, such as : runescape http://www.runescape-money.eu just have a click the link,you may get surprise gold of network games=EF=BC=9Acheap and delivery fast!come on! ...

Size 8 bit, 16 bit, 32 bit and 64 bit systems.
I need to find out what is the size of following data structures in 8 bit, 16 bit, 32 bit, and 64 bit systems. struct findsize{ unsigned char chA; unsigned long lg; unsigned short sh; unsigned char chB; }; sizeof() runs at compile time, that means one can know in advance what size of these. I don't have 8 bit or 16 bit systems. I do have 32 bit and 64 bit system. I believe, in 32 bit system, this would be 1+4+2+1 = 8 bytes. Can anyone throw some light here on how to find size? adar <adar_ji@yahoo.com> ...

I go U go /We go
1. Which are the best of these systems.... # I go U go # We go ....and are there differences also in those categories? 2. Which is the most fun for web-gaming? Morgan O. Morgan Ohlson wrote: > 1. Which are the best of these systems.... > # I go U go > # We go Age of Wonders II/SM, for instance, support both modes. Some people prefer the former, others the latter. Personally, I prefer the "I go, you go" system when playing against the computer, and "we go" when playing against a human opponent. Choice is good. M....

Web resources about - [9fans] Go and 21-bit runes (and a bit of Go status) - comp.os.plan9

GSoC (Plan 9 wiki)
Open source distributed operating system Plan 9 from Bell Labs.

[9fans] SO for plan9?
9fans archive / 2000 / 06 / 529 prev next search terms are split using tokenize from: regexp searches From: lines subject: regexp searches Subject: ...

Blog Archive
John Floren Home - Blog 2012 12/22 - Disassembling MyVu Shades 301 Video Glasses - ( Comments ) 9/27 - Found some old RIT pictures - ( Comments ...

Nielsen research: Social media impressions in Facebook ads
AdvertisingEffectiveness: Understanding the Value of a Social Media Impression APRIL 2010 INSIDE: …

Plan 9 from User Space
quotes - docs - repo - golang - sam - man - acme - Glenda - 9times - harmful - 9P - cat-v.org Related sites: - site updates - site map - man(1) ...

9fans archive /
9fans archive / search terms are split using tokenize from: regexp searches From: lines subject: regexp searches Subject: lines before: yyyy ...

[9fans] 9pi
9fans archive / 2012 / 08 / 129 prev next search terms are split using tokenize from: regexp searches From: lines subject: regexp searches Subject: ...

Resources last updated: 3/6/2016 7:03:24 AM