tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Rumpification (was Re: CVS commit: src/usr.sbin/envstat)



On Dec 14,  9:27am, tls%panix.com@localhost (Thor Lancelot Simon) wrote:
-- Subject: Re: Rumpification (was Re: CVS commit: src/usr.sbin/envstat)

| Perhaps the answer to the question of whether it's impossible to determine
| at runtime which system calls should go where is more obvious to you than
| it is to me.  I have not spent years immersed in the details of how rump
| works, after all.  I strongly suspect other people (including other NetBSD
| developers) are in a situation more like the one I'm in than the one you're
| in, as far as that goes.
| 
| If it is, in fact, impossible, how could a system call server work?  I don't
| know, so please, rather than mocking me, it would be helpful if you'd answer
| the question.

There is another reason for not rump-ifying programs: They make them
non-portable outside NetBSD. Something innocent like dd used to compile
just fine under linux, but now:

args.c:280:23: rump/rump.h: No such file or directory
args.c:281:32: rump/rump_syscalls.h: No such file or directory
args.c: At top level:
args.c:284: error: `rump_sys_open' undeclared here (not in a function)
args.c:284: error: initializer element is not constant
args.c:284: error: (near initialization for `ddfops_rump.op_open')
args.c:285: error: `rump_sys_close' undeclared here (not in a function)
args.c:285: error: initializer element is not constant
args.c:285: error: (near initialization for `ddfops_rump.op_close')
args.c:286: error: `rump_sys_fcntl' undeclared here (not in a function)
args.c:286: error: initializer element is not constant
args.c:286: error: (near initialization for `ddfops_rump.op_fcntl')
args.c:287: error: `rump_sys_ioctl' undeclared here (not in a function)
args.c:287: error: initializer element is not constant
args.c:287: error: (near initialization for `ddfops_rump.op_ioctl')
args.c:288: error: `rump_sys_fstat' undeclared here (not in a function)
args.c:288: error: initializer element is not constant
args.c:288: error: (near initialization for `ddfops_rump.op_fstat')
args.c:289: error: `rump_sys_fsync' undeclared here (not in a function)
args.c:289: error: initializer element is not constant
args.c:289: error: (near initialization for `ddfops_rump.op_fsync')
args.c:290: error: `rump_sys_ftruncate' undeclared here (not in a function)
args.c:290: error: initializer element is not constant
args.c:290: error: (near initialization for `ddfops_rump.op_ftruncate')
args.c:291: error: `rump_sys_lseek' undeclared here (not in a function)
args.c:291: error: initializer element is not constant
args.c:291: error: (near initialization for `ddfops_rump.op_lseek')
args.c:292: error: `rump_sys_read' undeclared here (not in a function)
args.c:292: error: initializer element is not constant
args.c:292: error: (near initialization for `ddfops_rump.op_read')
args.c:293: error: `rump_sys_write' undeclared here (not in a function)
args.c:293: error: initializer element is not constant
args.c:293: error: (near initialization for `ddfops_rump.op_write')

I think that most of the stuff that rump attemps to do should be done
with dynamic linker re-directions and source changes.

christos


Home | Main Index | Thread Index | Old Index