vmctl: fixup id. name for termination
Hi, It seems there is an inconsistency when it comes to terminating a VM by id or name (4/web point to the same VM here): before: % vmctl stop 4 stopping vm: requested to shutdown vm 4 % vmctl stop web stopping vm web: failed: Invalid argument Here's a diff which moves the checks out of the block which is only entered when we pass it a name: after: % vmctl stop 4 stopping vm: failed: Invalid argument % vmctl stop web stopping vm web: failed: Invalid argument If EINVAL is actually correct in this case I think is open for discussion. ENOTSUP might not be a bad candidate actually if the VM isn't running. OK? Index: vmd.c === RCS file: /cvs/src/usr.sbin/vmd/vmd.c,v retrieving revision 1.150 diff -u -p -r1.150 vmd.c --- vmd.c 18 Jun 2023 11:45:11 - 1.150 +++ vmd.c 2 Jul 2023 12:30:33 - @@ -159,20 +159,22 @@ vmd_dispatch_control(int fd, struct priv if ((vm = vm_getbyname(vid.vid_name)) == NULL) { res = ENOENT; break; - } else if ((vm->vm_state & VM_STATE_SHUTDOWN) && - (flags & VMOP_FORCE) == 0) { - res = EALREADY; - break; - } else if (!(vm->vm_state & VM_STATE_RUNNING)) { - res = EINVAL; - break; } id = vm->vm_vmid; } else if ((vm = vm_getbyvmid(id)) == NULL) { res = ENOENT; break; } - if (vm_checkperm(vm, &vm->vm_params.vmc_owner, vid.vid_uid)) { + + /* Validate curent state of vm */ + if ((vm->vm_state & VM_STATE_SHUTDOWN) && + (flags & VMOP_FORCE) == 0) { + res = EALREADY; + break; + } else if (!(vm->vm_state & VM_STATE_RUNNING)) { + res = EINVAL; + break; + } else if (vm_checkperm(vm, &vm->vm_params.vmc_owner, vid.vid_uid)) { res = EPERM; break; } -- jasper
regress: don't needlessly fiddle with MALLOC_OPTIONS
Hi, As discussed earlier with bluhm, regress tests shouldn't set or modify MALLOC_OPTIONS (except under very specific situations, like malloc tests). It would be better to set the options globally through sysctl when running the suite, as bluhm does. So remove most cases of MALLOC_OPTIONS from regress and amend the manpage guidelines accordingly. OK? diff 9ca4957b0bf957d4e3a97547c791aeac34911aaf /usr/src blob - a40fad57e604ca5bf7ccfee8c91bcb68bbb46456 file + regress/bin/csh/Makefile --- regress/bin/csh/Makefile +++ regress/bin/csh/Makefile @@ -20,7 +20,6 @@ REGRESS_TARGETS+= env .SUFFIXES: .in .in: - env -i MALLOC_OPTIONS=S ${CSH} <${.CURDIR}/${@}.in 2>&1 | \ - diff -u ${.CURDIR}/${@}.ok - + ${CSH} <${.CURDIR}/${@}.in 2>&1 | diff -u ${.CURDIR}/${@}.ok - .include blob - 3341dabb1403688df8f8e16fa2e31dcd3739d108 file + regress/bin/csh/filec.sh --- regress/bin/csh/filec.sh +++ regress/bin/csh/filec.sh @@ -50,8 +50,7 @@ cd ~ ! HOME=$tmp -MALLOC_OPTIONS=S -export HOME MALLOC_OPTIONS +export HOME # NL: Execute command. testseq "echo a\n" "? echo a\r\na\r\n? " blob - aee8864d3f8965a05eb4ca63f0ee80979d4d1591 file + regress/bin/ksh/edit/emacs.sh --- regress/bin/ksh/edit/emacs.sh +++ regress/bin/ksh/edit/emacs.sh @@ -25,10 +25,9 @@ EDITOR= ENV= HISTFILE= MAIL= -MALLOC_OPTIONS=S PS1=' # ' VISUAL=emacs -export EDITOR ENV HISTFILE MAIL MALLOC_OPTIONS PS1 VISUAL +export EDITOR ENV HISTFILE MAIL PS1 VISUAL # The function testseq() sets up a pseudo terminal and feeds its first # argument to a shell on standard input. It then checks that output blob - be15c4d1ee8d04be8f36c6f0d647241edbeb70f1 file + regress/bin/ksh/edit/vi.sh --- regress/bin/ksh/edit/vi.sh +++ regress/bin/ksh/edit/vi.sh @@ -25,10 +25,9 @@ EDITOR= ENV= HISTFILE= MAIL= -MALLOC_OPTIONS=S PS1=' # ' VISUAL=vi -export EDITOR ENV HISTFILE MAIL MALLOC_OPTIONS PS1 VISUAL +export EDITOR ENV HISTFILE MAIL PS1 VISUAL # The function testseq() sets up a pseudo terminal and feeds its first # argument to a shell on standard input. It then checks that output blob - 4a35e2664dba5fab3029d832bf181cd63bfa8c0a file + regress/bin/ksh/th --- regress/bin/ksh/th +++ regress/bin/ksh/th @@ -56,8 +56,7 @@ # missing, NAME is removed from the # environment. Programs are run with # the following minimal environment: -# USER, LOGNAME, HOME, PATH, SHELL, -# MALLOC_OPTIONS=S +# USER, LOGNAME, HOME, PATH, SHELL # (values from the current environment # takes higher precedence). # file-setup mps Used to create files, directories @@ -233,10 +232,8 @@ grep($do_test{$_} = 1, @ARGV); $all_tests = @ARGV == 0; # Set up a very minimal environment -%new_env = ( -MALLOC_OPTIONS => 'S', -); -foreach $env (('USER', 'LOGNAME', 'HOME', 'PATH', 'SHELL', 'MALLOC_OPTIONS')) { +%new_env = (); +foreach $env (('USER', 'LOGNAME', 'HOME', 'PATH', 'SHELL')) { $new_env{$env} = $ENV{$env} if defined $ENV{$env}; } if (defined $opt_e) { blob - f70d94bd6299646db94cbd0ef873bda47536d474 file + regress/usr.bin/doas/Makefile --- regress/usr.bin/doas/Makefile +++ regress/usr.bin/doas/Makefile @@ -114,8 +114,7 @@ ${t}: /bin/echo $$tdir/bin/echo; \ ${SUDO} install -o ${BINOWN} -g ${BINGRP} -m 4555 \ /usr/bin/doas $$tdir/usr/bin/doas; \ - ${SUDO} env MALLOC_OPTIONS=S chroot -u nobody $$tdir \ - /usr/bin/doas echo okay + ${SUDO} chroot -u nobody $$tdir /usr/bin/doas echo okay . endif .endfor blob - 7b9898b8ed49bbb82e891f12a98415ac996f9033 file + regress/usr.bin/mail/send.sh --- regress/usr.bin/mail/send.sh +++ regress/usr.bin/mail/send.sh @@ -43,8 +43,7 @@ set ask ! HOME=$tmp -MALLOC_OPTIONS=S -export HOME MALLOC_OPTIONS +export HOME # VERASE: Delete character. testseq "\0177" "Subject: " blob - 64237f6cc9abe1803f2082d0c8d0b91d214b58da file + regress/usr.bin/make/Makefile --- regress/usr.bin/make/Makefile +++ regress/usr.bin/make/Makefile @@ -8,191 +8,190 @@ REGRESS_TARGETS= t1 t2 t3 t4 t5 t6 t7 t8 t REGRESS_EXPECTED_FAILURES = t14 t17 t18 -MALLOC_OPTIONS?=J t1: t1.out - env -i PATH=${PATH} MALLOC_OPTIONS=${MALLOC_OPTIONS} ${MAKE} -e -r -f ${.CURDIR}/mk1 | diff - t1.out + env -i PATH=${PATH} ${MAKE} -e -r -f ${.CURDIR}/mk1 | diff - t1.out # This is a POSIX test. pmake does not pass variables to submakes until # after OpenBSD 2.7. t2: - cd ${.CURDIR} && env -i PATH=${PATH} MALLOC_OPTIONS=${MALLOC_OPTIONS} ${MAKE} -r -f mk2| diff - t2.out + cd ${.CURDIR} && env -i PATH=${PATH} ${MAKE} -r -f mk2| diff - t2.out t3: - cd ${.CURDIR} && env -i PATH=${PATH} MALLOC_OPTIONS=${MALLOC_OPTIONS} ${MAKE} -r -
Re: ddb trace: fix output for too many arguments
On Mon, Jul 12, 2021 at 08:18:20PM +0200, Mark Kettenis wrote: > > Date: Mon, 12 Jul 2021 20:11:30 +0200 > > From: Jasper Lievisse Adriaanse > > > > On Sun, Jul 11, 2021 at 03:58:05PM +0200, Jasper Lievisse Adriaanse wrote: > > > Hi, > > > > > > When printing a trace from ddb, some architectures are limited by the > > > number of > > > registers which are used to pass arguments. If the number of arguments to > > > a function > > > exceeded this number, the code in db_stack_trace_print() would print that > > > many arguments > > > without any indication that one or more arguments aren't printed. > > > > > > Here's a diff that tweaks the output to make it clear there were more > > > arguments. > > > Do we want to print ',...' for each ommited argument (like this diff does) > > > or perhaps just a single ',...'? > > > > I think just printing a single instance of ',...' gets the point across. > > OK? > > Actually, since we use -msave-args on amd64 the arguments are saved on > the stack. I think this means there is no limit on the number of > arguments we can print... Good point, there's no reason to cap narg at 6 any longer unless db_ctf_func_numargs() failed. Here's the diff for amd64. Other platforms could benefit from the ",..." approach but those'll be separate diffs. OK? Index: db_trace.c === RCS file: /cvs/src/sys/arch/amd64/amd64/db_trace.c,v retrieving revision 1.53 diff -u -p -r1.53 db_trace.c --- db_trace.c 14 May 2020 06:58:54 - 1.53 +++ db_trace.c 30 Aug 2021 08:44:36 - @@ -164,8 +164,7 @@ db_stack_trace_print(db_expr_t addr, int } } - narg = db_ctf_func_numargs(sym); - if (narg < 0 || narg > 6) + if ((narg = db_ctf_func_numargs(sym)) < 0) narg = 6; if (name == NULL)
Re: ddb trace: fix output for too many arguments
On Sun, Jul 11, 2021 at 03:58:05PM +0200, Jasper Lievisse Adriaanse wrote: > Hi, > > When printing a trace from ddb, some architectures are limited by the number > of > registers which are used to pass arguments. If the number of arguments to a > function > exceeded this number, the code in db_stack_trace_print() would print that > many arguments > without any indication that one or more arguments aren't printed. > > Here's a diff that tweaks the output to make it clear there were more > arguments. > Do we want to print ',...' for each ommited argument (like this diff does) > or perhaps just a single ',...'? I think just printing a single instance of ',...' gets the point across. OK? Index: arch/amd64/amd64/db_trace.c === RCS file: /cvs/src/sys/arch/amd64/amd64/db_trace.c,v retrieving revision 1.53 diff -u -p -r1.53 db_trace.c --- arch/amd64/amd64/db_trace.c 14 May 2020 06:58:54 - 1.53 +++ arch/amd64/amd64/db_trace.c 12 Jul 2021 18:08:21 - @@ -137,7 +137,7 @@ db_stack_trace_print(db_expr_t addr, int lastframe = 0; while (count && frame != 0) { - int narg; + int narg, extra_args = 0; unsigned inti; char * name; db_expr_t offset; @@ -165,8 +165,12 @@ db_stack_trace_print(db_expr_t addr, int } narg = db_ctf_func_numargs(sym); - if (narg < 0 || narg > 6) + if (narg < 0) narg = 6; + else if (narg > 6) { + narg = 6; + extra_args = 1; + } if (name == NULL) (*pr)("%lx(", callpc); @@ -204,6 +208,10 @@ db_stack_trace_print(db_expr_t addr, int if (--narg != 0) (*pr)(","); } + + if (extra_args) + (*pr)(",..."); + (*pr)(") at "); db_printsym(callpc, DB_STGY_PROC, pr); (*pr)("\n"); Index: arch/powerpc/ddb/db_trace.c === RCS file: /cvs/src/sys/arch/powerpc/ddb/db_trace.c,v retrieving revision 1.17 diff -u -p -r1.17 db_trace.c --- arch/powerpc/ddb/db_trace.c 14 May 2020 06:58:54 - 1.17 +++ arch/powerpc/ddb/db_trace.c 12 Jul 2021 18:08:21 - @@ -123,7 +123,7 @@ db_stack_trace_print(db_expr_t addr, int Elf_Sym *sym; char*name; char c, *cp = modif; - int i, narg, trace_proc = 0; + int i, narg, trace_proc = 0, extra_args = 0; while ((c = *cp++) != 0) { if (c == 't') @@ -158,8 +158,12 @@ db_stack_trace_print(db_expr_t addr, int (*pr)("at 0x%lx", lr - 4); } else { narg = db_ctf_func_numargs(sym); - if (narg < 0 || narg > 8) + if (narg < 0) narg = 8; + else if (narg > 8) { + narg = 8; + extra_args = 1; + } (*pr)("%s(", name); @@ -172,6 +176,9 @@ db_stack_trace_print(db_expr_t addr, int (*pr)(","); } } + + if (extra_args) + (*pr)(",..."); (*pr)(") at "); db_printsym(lr - 4, DB_STGY_PROC, pr); -- jasper
ddb trace: fix output for too many arguments
Hi, When printing a trace from ddb, some architectures are limited by the number of registers which are used to pass arguments. If the number of arguments to a function exceeded this number, the code in db_stack_trace_print() would print that many arguments without any indication that one or more arguments aren't printed. Here's a diff that tweaks the output to make it clear there were more arguments. Do we want to print ',...' for each ommited argument (like this diff does) or perhaps just a single ',...'? Index: amd64/amd64/db_trace.c === RCS file: /cvs/src/sys/arch/amd64/amd64/db_trace.c,v retrieving revision 1.53 diff -u -p -r1.53 db_trace.c --- amd64/amd64/db_trace.c 14 May 2020 06:58:54 - 1.53 +++ amd64/amd64/db_trace.c 11 Jul 2021 13:23:04 - @@ -137,7 +136,7 @@ db_stack_trace_print(db_expr_t addr, int lastframe = 0; while (count && frame != 0) { - int narg; + int narg, extra_args = 0; unsigned inti; char * name; db_expr_t offset; @@ -165,8 +164,12 @@ db_stack_trace_print(db_expr_t addr, int } narg = db_ctf_func_numargs(sym); - if (narg < 0 || narg > 6) + if (narg < 0) + narg = 6; + else if (narg > 6) { + extra_args = narg % 6; narg = 6; + } if (name == NULL) (*pr)("%lx(", callpc); @@ -204,6 +207,9 @@ db_stack_trace_print(db_expr_t addr, int if (--narg != 0) (*pr)(","); } + for (i = extra_args; i > 0; i--) + (*pr)(",..."); + (*pr)(") at "); db_printsym(callpc, DB_STGY_PROC, pr); (*pr)("\n"); Index: powerpc/ddb/db_trace.c === RCS file: /cvs/src/sys/arch/powerpc/ddb/db_trace.c,v retrieving revision 1.17 diff -u -p -r1.17 db_trace.c --- powerpc/ddb/db_trace.c 14 May 2020 06:58:54 - 1.17 +++ powerpc/ddb/db_trace.c 11 Jul 2021 13:23:04 - @@ -123,7 +123,7 @@ db_stack_trace_print(db_expr_t addr, int Elf_Sym *sym; char*name; char c, *cp = modif; - int i, narg, trace_proc = 0; + int i, narg, trace_proc = 0, extra_args = 0; while ((c = *cp++) != 0) { if (c == 't') @@ -158,8 +158,12 @@ db_stack_trace_print(db_expr_t addr, int (*pr)("at 0x%lx", lr - 4); } else { narg = db_ctf_func_numargs(sym); - if (narg < 0 || narg > 8) + if (narg < 0) narg = 8; + else if (narg > 8) { + extra_args = narg % 8; + narg = 8; + } (*pr)("%s(", name); @@ -172,6 +176,9 @@ db_stack_trace_print(db_expr_t addr, int (*pr)(","); } } + + for (i = extra_args; i > 0; i--) + (*pr)(",..."); (*pr)(") at "); db_printsym(lr - 4, DB_STGY_PROC, pr); -- jasper
Re: [PATCH] wireguard: release correct lock on exceptional case
On Sat, Oct 31, 2020 at 03:03:10PM +0100, Jason A. Donenfeld wrote: > Backtrace from Jesper: > > ddb{0}> show panic > noise_keypair: lock not held > ddb{0}> trace > db_enter() at db_enter+0x10 > panic(81db9b58) at panic+0x12a > rw_exit_write(8801ed10) at rw_exit_write+0xb5 > noise_remote_begin_session(8801ec10) at > noise_remote_begin_session+0x3c > 1 > wg_send_response(8801ebe0) at wg_send_response+0x7b > wg_handshake(80588000,fd800e7b5a00) at wg_handshake+0x576 > wg_handshake_worker(80588000) at wg_handshake_worker+0x48 > taskq_thread(80049200) at taskq_thread+0x81 > end trace frame: 0x0, count: -8 > ddb{0}> machine ddbcpu 1 > > Reported-by: Jasper Lievisse Adriaanse > --- > sys/net/wg_noise.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git sys/net/wg_noise.c sys/net/wg_noise.c > index 66bdecee80e..adb00568eb4 100644 > --- sys/net/wg_noise.c > +++ sys/net/wg_noise.c > @@ -459,7 +459,7 @@ noise_remote_begin_session(struct noise_remote *r) > NOISE_SYMMETRIC_KEY_LEN, NOISE_SYMMETRIC_KEY_LEN, 0, 0, > hs->hs_ck); > } else { > - rw_exit_write(&r->r_keypair_lock); > + rw_exit_write(&r->r_handshake_lock); > return EINVAL; > } > > -- > 2.29.1 Thanks for the quick fix, I've just committed this. Cheers, -- jasper
Re: btrace: add boolean AND and OR operators
On Mon, Sep 14, 2020 at 03:39:04PM +0200, Otto Moerbeek wrote: > On Mon, Sep 14, 2020 at 03:28:17PM +0200, Jasper Lievisse Adriaanse wrote: > > > Hi, > > > > This diff adds support for the '&' and '|' operators, along with > > a new testcase. > > > > OK? > > The precedence looks funny > > I'd guess you want > > %left '|' > %left '&' > %left '+' '-' > %left '/' '*' > > To avoid suprises. > > -Otto Good point. Index: usr.sbin/btrace/bt_parse.y === RCS file: /cvs/src/usr.sbin/btrace/bt_parse.y,v retrieving revision 1.16 diff -u -p -r1.16 bt_parse.y --- usr.sbin/btrace/bt_parse.y 11 Jul 2020 14:52:14 - 1.16 +++ usr.sbin/btrace/bt_parse.y 14 Sep 2020 15:41:40 - @@ -117,6 +117,8 @@ static int yylex(void); %type expr vargs map mexpr term %type beginend +%left '|' +%left '&' %left '+' '-' %left '/' '*' %% @@ -172,6 +174,8 @@ term: '(' term ')' { $$ = $2; } | term '-' term { $$ = ba_op('-', $1, $3); } | term '/' term { $$ = ba_op('/', $1, $3); } | term '*' term { $$ = ba_op('*', $1, $3); } + | term '&' term { $$ = ba_op('&', $1, $3); } + | term '|' term { $$ = ba_op('|', $1, $3); } | NUMBER{ $$ = ba_new($1, B_AT_LONG); } | builtin { $$ = ba_new(NULL, $1); } | gvar { $$ = bv_get($1); } @@ -331,6 +335,12 @@ ba_op(const char op, struct bt_arg *da0, break; case '/': type = B_AT_OP_DIVIDE; + break; + case '&': + type = B_AT_OP_AND; + break; + case '|': + type = B_AT_OP_OR; break; default: assert(0); Index: usr.sbin/btrace/bt_parser.h === RCS file: /cvs/src/usr.sbin/btrace/bt_parser.h,v retrieving revision 1.9 diff -u -p -r1.9 bt_parser.h --- usr.sbin/btrace/bt_parser.h 13 Aug 2020 11:29:39 - 1.9 +++ usr.sbin/btrace/bt_parser.h 14 Sep 2020 15:41:40 - @@ -143,6 +143,8 @@ struct bt_arg { B_AT_OP_MINUS, B_AT_OP_MULT, B_AT_OP_DIVIDE, + B_AT_OP_AND, + B_AT_OP_OR, }ba_type; }; Index: usr.sbin/btrace/btrace.c === RCS file: /cvs/src/usr.sbin/btrace/btrace.c,v retrieving revision 1.24 diff -u -p -r1.24 btrace.c --- usr.sbin/btrace/btrace.c11 Sep 2020 08:16:15 - 1.24 +++ usr.sbin/btrace/btrace.c14 Sep 2020 15:41:40 - @@ -812,7 +812,7 @@ stmt_store(struct bt_stmt *bs, struct dt case B_AT_BI_NSECS: bv->bv_value = ba_new(builtin_nsecs(dtev), B_AT_LONG); break; - case B_AT_OP_ADD ... B_AT_OP_DIVIDE: + case B_AT_OP_ADD ... B_AT_OP_OR: bv->bv_value = ba_new(ba2long(ba, dtev), B_AT_LONG); break; default: @@ -992,6 +992,12 @@ baexpr2long(struct bt_arg *ba, struct dt case B_AT_OP_DIVIDE: result = first / second; break; + case B_AT_OP_AND: + result = first & second; + break; + case B_AT_OP_OR: + result = first | second; + break; default: xabort("unsuported operation %d", ba->ba_type); } @@ -1025,7 +1031,7 @@ ba2long(struct bt_arg *ba, struct dt_evt case B_AT_BI_RETVAL: val = dtev->dtev_sysretval[0]; break; - case B_AT_OP_ADD ... B_AT_OP_DIVIDE: + case B_AT_OP_ADD ... B_AT_OP_OR: val = baexpr2long(ba, dtev); break; default: @@ -1093,7 +1099,7 @@ ba2str(struct bt_arg *ba, struct dt_evt case B_AT_VAR: str = ba2str(ba_read(ba), dtev); break; - case B_AT_OP_ADD ... B_AT_OP_DIVIDE: + case B_AT_OP_ADD ... B_AT_OP_OR: snprintf(buf, sizeof(buf) - 1, "%ld", ba2long(ba, dtev)); str = buf; break; @@ -1152,7 +1158,7 @@ ba2dtflags(struct bt_arg *ba) case B_AT_MF_MAX: case B_AT_MF_MIN: case B_AT_MF_SUM: - ca
btrace: add boolean AND and OR operators
Hi, This diff adds support for the '&' and '|' operators, along with a new testcase. OK? Index: usr.sbin/btrace/bt_parse.y === RCS file: /cvs/src/usr.sbin/btrace/bt_parse.y,v retrieving revision 1.16 diff -u -p -r1.16 bt_parse.y --- usr.sbin/btrace/bt_parse.y 11 Jul 2020 14:52:14 - 1.16 +++ usr.sbin/btrace/bt_parse.y 14 Sep 2020 15:14:10 - @@ -119,6 +119,7 @@ static int yylex(void); %left '+' '-' %left '/' '*' +%left '&' '|' %% grammar: /* empty */ @@ -172,6 +173,8 @@ term: '(' term ')' { $$ = $2; } | term '-' term { $$ = ba_op('-', $1, $3); } | term '/' term { $$ = ba_op('/', $1, $3); } | term '*' term { $$ = ba_op('*', $1, $3); } + | term '&' term { $$ = ba_op('&', $1, $3); } + | term '|' term { $$ = ba_op('|', $1, $3); } | NUMBER{ $$ = ba_new($1, B_AT_LONG); } | builtin { $$ = ba_new(NULL, $1); } | gvar { $$ = bv_get($1); } @@ -331,6 +334,12 @@ ba_op(const char op, struct bt_arg *da0, break; case '/': type = B_AT_OP_DIVIDE; + break; + case '&': + type = B_AT_OP_AND; + break; + case '|': + type = B_AT_OP_OR; break; default: assert(0); Index: usr.sbin/btrace/bt_parser.h === RCS file: /cvs/src/usr.sbin/btrace/bt_parser.h,v retrieving revision 1.9 diff -u -p -r1.9 bt_parser.h --- usr.sbin/btrace/bt_parser.h 13 Aug 2020 11:29:39 - 1.9 +++ usr.sbin/btrace/bt_parser.h 14 Sep 2020 15:14:10 - @@ -143,6 +143,8 @@ struct bt_arg { B_AT_OP_MINUS, B_AT_OP_MULT, B_AT_OP_DIVIDE, + B_AT_OP_AND, + B_AT_OP_OR, }ba_type; }; Index: usr.sbin/btrace/btrace.c === RCS file: /cvs/src/usr.sbin/btrace/btrace.c,v retrieving revision 1.24 diff -u -p -r1.24 btrace.c --- usr.sbin/btrace/btrace.c11 Sep 2020 08:16:15 - 1.24 +++ usr.sbin/btrace/btrace.c14 Sep 2020 15:14:10 - @@ -812,7 +812,7 @@ stmt_store(struct bt_stmt *bs, struct dt case B_AT_BI_NSECS: bv->bv_value = ba_new(builtin_nsecs(dtev), B_AT_LONG); break; - case B_AT_OP_ADD ... B_AT_OP_DIVIDE: + case B_AT_OP_ADD ... B_AT_OP_OR: bv->bv_value = ba_new(ba2long(ba, dtev), B_AT_LONG); break; default: @@ -992,6 +992,12 @@ baexpr2long(struct bt_arg *ba, struct dt case B_AT_OP_DIVIDE: result = first / second; break; + case B_AT_OP_AND: + result = first & second; + break; + case B_AT_OP_OR: + result = first | second; + break; default: xabort("unsuported operation %d", ba->ba_type); } @@ -1025,7 +1031,7 @@ ba2long(struct bt_arg *ba, struct dt_evt case B_AT_BI_RETVAL: val = dtev->dtev_sysretval[0]; break; - case B_AT_OP_ADD ... B_AT_OP_DIVIDE: + case B_AT_OP_ADD ... B_AT_OP_OR: val = baexpr2long(ba, dtev); break; default: @@ -1093,7 +1099,7 @@ ba2str(struct bt_arg *ba, struct dt_evt case B_AT_VAR: str = ba2str(ba_read(ba), dtev); break; - case B_AT_OP_ADD ... B_AT_OP_DIVIDE: + case B_AT_OP_ADD ... B_AT_OP_OR: snprintf(buf, sizeof(buf) - 1, "%ld", ba2long(ba, dtev)); str = buf; break; @@ -1152,7 +1158,7 @@ ba2dtflags(struct bt_arg *ba) case B_AT_MF_MAX: case B_AT_MF_MIN: case B_AT_MF_SUM: - case B_AT_OP_ADD ... B_AT_OP_DIVIDE: + case B_AT_OP_ADD ... B_AT_OP_OR: break; default: xabort("invalid argument type %d", ba->ba_type); Index: regress/usr.sbin/btrace/Makefile === RCS file: /cvs/src/regress/usr.sbin/btrace/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- regress/usr.sbin/btrace/Makefile19 Mar 2020 15:53:09 - 1.4 +++ regress/usr.sbin/btrace/Makefile14 Sep 2020 15:14:10 - @@ -3,8 +3,8 @@ BTRACE?=/usr/sbin/btrace # scripts that don't need /dev/dt -BT_LANG_SCRIPTS= arithm beginend comments delete exit map map-unnamed \ - maxoperand min+max+sum multismts nsecs+var +
dt: add static vfs probes
Hi, Whilst analyzing the cleaner I added tracepoints called 'cleaner' and 'bufcache_take' to track its behaviour. For the sake of symmetry I've added one in bufcache_release() too and moved the assignment of 'pages' until after the KASSERT(), following the flow of bufcache_take(). Sample usage of these probes: tracepoint:vfs:bufcache_take { printf("bcache_take:%d(%s) flags: 0x%x cache: %d pages: %d\n", tid, comm, arg0 , arg1, arg2); } tracepoint:vfs:bufcache_rel{ printf("bcache_rel:%d(%s) flags: 0x%x cache: %d pages: %d\n", tid, comm, arg0, arg1, arg2); } tracepoint:vfs:cleaner{ printf("cleaner:%d(%s) flags: 0x%x pushed: %d lodirtypages: %d, hidirtypages: %d\n", tid, comm, arg0, arg1, arg2, arg3); } OK to commit this? Index: dev/dt/dt_prov_static.c === RCS file: /cvs/src/sys/dev/dt/dt_prov_static.c,v retrieving revision 1.4 diff -u -p -r1.4 dt_prov_static.c --- dev/dt/dt_prov_static.c 13 Sep 2020 14:55:08 - 1.4 +++ dev/dt/dt_prov_static.c 14 Sep 2020 10:43:43 - @@ -58,6 +58,13 @@ DT_STATIC_PROBE3(uvm, map_insert, "vaddr DT_STATIC_PROBE3(uvm, map_remove, "vaddr_t", "vaddr_t", "vm_prot_t"); /* + * VFS + */ +DT_STATIC_PROBE3(vfs, bufcache_rel, "long", "int", "int64_t"); +DT_STATIC_PROBE3(vfs, bufcache_take, "long", "int", "int64_t"); +DT_STATIC_PROBE4(vfs, cleaner, "long", "int", "long", "long"); + +/* * List of all static probes */ struct dt_probe *dtps_static[] = { @@ -76,6 +83,10 @@ struct dt_probe *dtps_static[] = { &_DT_STATIC_P(uvm, fault), &_DT_STATIC_P(uvm, map_insert), &_DT_STATIC_P(uvm, map_remove), + /* VFS */ + &_DT_STATIC_P(vfs, bufcache_rel), + &_DT_STATIC_P(vfs, bufcache_take), + &_DT_STATIC_P(vfs, cleaner), }; int Index: kern/vfs_bio.c === RCS file: /cvs/src/sys/kern/vfs_bio.c,v retrieving revision 1.202 diff -u -p -r1.202 vfs_bio.c --- kern/vfs_bio.c 12 Sep 2020 11:57:24 - 1.202 +++ kern/vfs_bio.c 14 Sep 2020 10:43:43 - @@ -57,6 +57,7 @@ #include #include #include +#include #include /* XXX Should really be in buf.h, but for uvm_constraint_range.. */ @@ -1209,6 +1210,9 @@ buf_daemon(void *arg) } while ((bp = bufcache_getdirtybuf())) { + TRACEPOINT(vfs, cleaner, bp->b_flags, pushed, + lodirtypages, hidirtypages); + if (UNCLEAN_PAGES < lodirtypages && bcstats.kvaslots_avail > 2 * RESERVE_SLOTS && pushed >= 16) @@ -1693,6 +1697,9 @@ bufcache_take(struct buf *bp) KASSERT((bp->cache < NUM_CACHES)); pages = atop(bp->b_bufsize); + + TRACEPOINT(vfs, bufcache_take, bp->b_flags, bp->cache, pages); + struct bufcache *cache = &cleancache[bp->cache]; if (!ISSET(bp->b_flags, B_DELWRI)) { if (ISSET(bp->b_flags, B_COLD)) { @@ -1756,8 +1763,11 @@ bufcache_release(struct buf *bp) int64_t pages; struct bufcache *cache = &cleancache[bp->cache]; - pages = atop(bp->b_bufsize); KASSERT(ISSET(bp->b_flags, B_BC)); + pages = atop(bp->b_bufsize); + + TRACEPOINT(vfs, bufcache_rel, bp->b_flags, bp->cache, pages); + if (fliphigh) { if (ISSET(bp->b_flags, B_DMA) && bp->cache > 0) panic("B_DMA buffer release from cache %d", -- jasper
Re: acpitoshiba: remove dead code
> On 16 Mar 2020, at 09:49, Stefan Sperling wrote: > > On Mon, Mar 16, 2020 at 09:29:43AM +0100, Jasper Lievisse Adriaanse wrote: >> Hi, >> >> The type of brightness and video_output is uint32_t; therefore it >> can never be less than 0 (which is what HCI_LCD_BRIGHTNESS_MIN and >> HCI_VIDEO_OUTPUT_CYCLE_MIN are defined to). So trim the checks by >> removig the impossible cases. >> >> Coverity CID 1453109, 1453169 >> >> OK? > > These values ultimately come from aml_val2int() which returns int64_t, > i.e. a signed value. This driver currently copies that value to a uint32_t, > shifts it, and this shifted value ends up being copied to an int, and then > again to a uint32_t, which is then range-checked. > I don't understand why a range check is done only that late in the game, > after multiple integer type conversions that seem to be performed for no > good reason other than that the expected range will fit into an int. > > So an alternative fix could be to switch brightness values in this > driver to int64_t everywhere, i.e. in toshiba_get_brightness(), > toshiba_find_brightness(), toshiba_set_brightness(), etc. > Then you can keep all the code as it is. > > Or read an int64_t with aml_val2int(), shift and range-check it right away, > and only convert to a narrower type if the value is in the expected range. > Else error. Right, it seems that other drivers either use an uint64_t with associated shifts or int to match wsdisplay_params->curval. Also, it seems this passing around of ‘brightness’ could be avoided by making it a member of acpitoshiba_softc; same goes for 'video_output'.
acpitoshiba: remove dead code
Hi, The type of brightness and video_output is uint32_t; therefore it can never be less than 0 (which is what HCI_LCD_BRIGHTNESS_MIN and HCI_VIDEO_OUTPUT_CYCLE_MIN are defined to). So trim the checks by removig the impossible cases. Coverity CID 1453109, 1453169 OK? Index: acpi/acpitoshiba.c === RCS file: /cvs/src/sys/dev/acpi/acpitoshiba.c,v retrieving revision 1.12 diff -u -p -r1.12 acpitoshiba.c --- acpi/acpitoshiba.c 13 Oct 2019 10:56:31 - 1.12 +++ acpi/acpitoshiba.c 11 Mar 2020 11:35:23 - @@ -438,9 +438,8 @@ toshiba_set_brightness(struct acpitoshib for (i = 0; i < HCI_WORDS; ++i) args[i].type = AML_OBJTYPE_INTEGER; - if ((*brightness < HCI_LCD_BRIGHTNESS_MIN) || - (*brightness > HCI_LCD_BRIGHTNESS_MAX)) - return (HCI_FAILURE); + if (*brightness > HCI_LCD_BRIGHTNESS_MAX) + return (HCI_FAILURE); *brightness <<= HCI_LCD_BRIGHTNESS_SHIFT; @@ -534,8 +533,7 @@ toshiba_set_video_output(struct acpitosh bzero(args, sizeof(args)); - if ((*video_output < HCI_VIDEO_OUTPUT_CYCLE_MIN) || - (*video_output > HCI_VIDEO_OUTPUT_CYCLE_MAX)) + if (*video_output > HCI_VIDEO_OUTPUT_CYCLE_MAX) return (HCI_FAILURE); *video_output |= HCI_VIDEO_OUTPUT_FLAG; -- jasper
check disk_lookup return value
Hi, Check return value of disk_lookup before dereference as it can return NULL. These are Coverity CID 1452925, 1452951, 1452967. Other functions using disk_lookup (or the re-defined versions like wdlookup) check the return value already, including in the context of hibernation (sdmmc_scsi_hibernate_io and wd_hibernate_io). Is there something special about the instances below or was it merely oversight? Index: dev/softraid.c === RCS file: /cvs/src/sys/dev/softraid.c,v retrieving revision 1.399 diff -u -p -r1.399 softraid.c --- dev/softraid.c 10 Mar 2020 08:41:19 - 1.399 +++ dev/softraid.c 11 Mar 2020 12:28:53 - @@ -5068,6 +5068,8 @@ sr_hibernate_io(dev_t dev, daddr_t blkno */ if (op == HIB_INIT) { dv = disk_lookup(&sd_cd, DISKUNIT(dev)); + if (dv == NULL) + return (EIO); sd = (struct sd_softc *)dv; sc = (struct sr_softc *)dv->dv_parent->dv_parent; Index: dev/ic/nvme.c === RCS file: /cvs/src/sys/dev/ic/nvme.c,v retrieving revision 1.72 diff -u -p -r1.72 nvme.c --- dev/ic/nvme.c 10 Mar 2020 14:49:20 - 1.72 +++ dev/ic/nvme.c 11 Mar 2020 12:28:53 - @@ -1498,6 +1498,8 @@ nvme_hibernate_io(dev_t dev, daddr_t blk /* find nvme softc */ disk = disk_lookup(&sd_cd, DISKUNIT(dev)); + if (disk == NULL) + return (EIO); scsibus = disk->dv_parent; my->sc = (struct nvme_softc *)disk->dv_parent->dv_parent; Index: dev/ic/ahci.c === RCS file: /cvs/src/sys/dev/ic/ahci.c,v retrieving revision 1.34 diff -u -p -r1.34 ahci.c --- dev/ic/ahci.c 8 Jul 2019 22:02:59 - 1.34 +++ dev/ic/ahci.c 11 Mar 2020 12:28:53 - @@ -3265,6 +3265,8 @@ ahci_hibernate_io(dev_t dev, daddr_t blk /* map dev to an ahci port */ disk = disk_lookup(&sd_cd, DISKUNIT(dev)); + if (disk == NULL) + return (EIO); scsibus = disk->dv_parent; sc = (struct ahci_softc *)disk->dv_parent->dv_parent; -- jasper
uplcom: remove dead code
Hi, Remove dead code which is actually duplicated a few lines above right after err is set. Coverity ID 975917 OK? Index: dev/usb/uplcom.c === RCS file: /cvs/src/sys/dev/usb/uplcom.c,v retrieving revision 1.73 diff -u -p -U11 -r1.73 uplcom.c --- dev/usb/uplcom.c18 Nov 2018 16:23:14 - 1.73 +++ dev/usb/uplcom.c11 Mar 2020 12:36:03 - @@ -619,27 +619,22 @@ uplcom_param(void *addr, int portno, str if (err) { DPRINTF(("uplcom_param: err=%s\n", usbd_errstr(err))); return (EIO); } if (ISSET(t->c_cflag, CRTSCTS)) uplcom_set_crtscts(sc); if (sc->sc_rts == -1 || sc->sc_dtr == -1) uplcom_set_line_state(sc); - if (err) { - DPRINTF(("uplcom_param: err=%s\n", usbd_errstr(err))); - return (EIO); - } - return (0); } int uplcom_open(void *addr, int portno) { struct uplcom_softc *sc = addr; usb_device_request_t req; usbd_status uerr; int err; -- jasper
tcpdump: decode some Setup fields for Control transfers
Hi, Currently the usbpcap is fairly terse in that it prints the endpoints, type of transfer and data size. Below is a diff to start decoding more data from the packets, currently focusing on control transfers: - print the control stage - for the Setup control transfer stage, print additional information about the request. This diff contains the bits to decode the wValue for GET_DESCRIPTOR requests, others will follow shortly after making sure my approach is right. with this diff the output (for a selection of packets) goes from this: 22:28:09.517113 bus 0 < addr 1: ep1 intr dlen=2 22:28:09.517145 bus 0 > addr 1: ep0 ctrl dlen=8 22:28:09.517146 bus 0 > addr 1: ep0 ctrl dlen=0 22:28:09.517148 bus 0 < addr 1: ep0 ctrl dlen=4 [..] 22:28:10.138325 bus 0 > addr 0: ep0 ctrl dlen=8 to this: 22:28:09.517113 bus 0 < addr 1: ep1 intr dlen=2 22:28:09.517145 bus 0 > addr 1: ep0 ctrl dlen=8 stage=setup bmRequestType=UT_READ_CLASS_OTHER bRequest=GET_STATUS wValue=0x wIndex=0003 wLength=4 22:28:09.517146 bus 0 > addr 1: ep0 ctrl dlen=0 stage=status 22:28:09.517148 bus 0 < addr 1: ep0 ctrl dlen=4 stage=data [..] 22:28:10.138325 bus 0 > addr 0: ep0 ctrl dlen=8 stage=setup bmRequestType=UT_READ_DEVICE bRequest=GET_DESCRIPTOR type=DEVICE index=0x00 wIndex= wLength=8 OK? Index: print-usbpcap.c === RCS file: /cvs/src/usr.sbin/tcpdump/print-usbpcap.c,v retrieving revision 1.3 diff -u -p -r1.3 print-usbpcap.c --- print-usbpcap.c 22 Feb 2020 14:05:08 - 1.3 +++ print-usbpcap.c 23 Feb 2020 13:06:55 - @@ -29,6 +29,41 @@ const char *usbpcap_xfer_type[] = {"isoc", "intr", "ctrl", "bulk"}; +struct usbpcap_control_stage_fields { + uint8_t stage; + char*name; +}; + +static const struct usbpcap_control_stage_fields usb_control_stages[] = { + { USBPCAP_CONTROL_STAGE_SETUP, "setup" }, + { USBPCAP_CONTROL_STAGE_DATA, "data" }, + { USBPCAP_CONTROL_STAGE_STATUS, "status" }, +}; + +struct usbpcap_request_code_fields { + uByterequest; + char*name; +}; + +static const struct usbpcap_request_code_fields usb_request_codes[] = { + { UR_GET_STATUS,"GET_STATUS" }, + { UR_CLEAR_FEATURE, "CLEAR_FEATURE" }, + { 0,NULL }, + { UR_SET_FEATURE, "SET_FEATURE" }, + { 0,NULL }, + { UR_SET_ADDRESS, "SET_ADDRESS" }, + { UR_GET_DESCRIPTOR,"GET_DESCRIPTOR" }, + { UR_SET_DESCRIPTOR,"SET_DESCRIPTOR" }, + { UR_GET_CONFIG,"GET_CONFIG" }, + { UR_SET_CONFIG,"SET_CONFIG" }, + { UR_GET_INTERFACE, "GET_INTERFACE" }, + { UR_SET_INTERFACE, "SET_INTERFACE" }, + { UR_SYNCH_FRAME, "SYNCH_FRAME" }, +}; + +voidusbpcap_print_descriptor(int); +voidusbpcap_print_request_type(uint8_t); + void usbpcap_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) { @@ -65,6 +100,40 @@ usbpcap_if_print(u_char *user, const str printf(" dlen=%u", letoh32(uph->uph_dlen)); + if (uph->uph_xfertype == USBPCAP_TRANSFER_CONTROL) { + struct usbpcap_ctl_hdr *ctl_hdr = (struct usbpcap_ctl_hdr *)p; + + if (ctl_hdr->uch_stage < nitems(usb_control_stages)) + printf(" stage=%s", usb_control_stages[ctl_hdr->uch_stage].name); + else + printf(" stage=?"); + + if (ctl_hdr->uch_stage == USBPCAP_CONTROL_STAGE_SETUP) { + /* Setup packets must be 8 bytes in size as per +* 9.3 USB Device Requests. */ + if (letoh32(uph->uph_dlen != 8)) + goto trunc; + + usb_device_request_t *req = + (usb_device_request_t *)(p+sizeof(struct usbpcap_ctl_hdr)); + + usbpcap_print_request_type(req->bmRequestType); + + if (req->bRequest < nitems(usb_request_codes)) + printf(" bRequest=%s", usb_request_codes[req->bRequest].name); + else + printf(" bRequest=?"); + + if (req->bRequest == UR_GET_DESCRIPTOR) + usbpcap_print_descriptor(UGETW(req->wValue)); + else + printf(" wValue=0x%04x", UGETW(req->wValue)); + + printf(" wIndex=%04x", UGETW(req->wIndex)); + printf(" wLength=%u", UGETW(req->wLength)); + } + } + if (xflag) default_print(p + sizeof(*uph), length - sizeof(*uph)); out: @@ -72,4 +141,154 @@ out: return; trunc: printf("[|usb]"); +} + +void +usbpcap_print_descriptor(int value) { + printf(" type="); + switch (value >> 8) { + case UDESC_DEVICE: +
Re: usbdevs: small addition
On Sun, Feb 23, 2020 at 11:52:10AM +1100, Jonathan Gray wrote: > On Sat, Feb 22, 2020 at 04:22:25PM +0100, Jasper Lievisse Adriaanse wrote: > > Hi, > > > > - add an AMD product found on the APU2 > > I would not consider 0x7900 a root hub as it attaches to another hub > > uhub2 at uhub1 port 1 configuration 1 interface 0 "Advanced Micro Devices > product 0x7900" rev 2.00/0.18 addr 2 I'll change it to 'Hub' then. > > - add vendor id for "Synaptics, Inc. > > I'd just go with "Synaptics" Okey. > > - add synaptics fingerprint reader found on recent thinkpads; I couldn't > > find a proper > > name for this device in the Linux usb.ids repository so I went with the > > generic > > 'Fingerprint Reader" that's also used elsewhere in this file. > > does it not supply a string itself? How would I get the device to do this? > the lenovo windows driver matches on 0x06cb:0x00bd and 0x06cb:0x00c2 > and calls itself "Synaptics UWP WBDI" which isn't very helpful. I've added the 0x00c2 to the diff below, re-using the original description for now. Index: usbdevs === RCS file: /cvs/src/sys/dev/usb/usbdevs,v retrieving revision 1.710 diff -u -p -r1.710 usbdevs --- usbdevs 27 Jan 2020 15:41:42 - 1.710 +++ usbdevs 23 Feb 2020 10:12:02 - @@ -262,6 +262,7 @@ vendor AGFA 0x06bd AGFA-Gevaert vendor ASIAMD 0x06be Asia Microelectronic Development vendor PHIDGETS0x06c2 Phidgets vendor BIZLINK 0x06c4 Bizlink International +vendor SYNAPTICS 0x06cb Synaptics vendor KEYSPAN 0x06cd Keyspan vendor AASHIMA 0x06d6 Aashima Technology vendor LIEBERT 0x06da Liebert @@ -888,6 +889,9 @@ product ALTI2 NEPTUNE3 0x6001 Neptune 3 product AMBIT WLAN 0x0302 WLAN product AMBIT NTL_250 0x6098 NTL 250 cable modem +/* Advanced Micro Devices products */ +product AMD HUB0x7900 Hub + /* Amigo Technology products */ product AMIGO RT2870_1 0x9031 RT2870 product AMIGO RT2870_2 0x9041 RT2870 @@ -4167,6 +4171,10 @@ product SWEEX2 LW153 0x0153 LW153 product SWEEX2 LW154 0x0154 LW154 product SWEEX2 LW303 0x0302 LW303 product SWEEX2 LW313 0x0313 LW313 + +/* Synaptics products */ +product SYNAPTICS FPRINT 0x00bd Fingerprint Reader +product SYNAPTICS FPRINT_2 0x00c2 Fingerprint Reader /* Syntech Information products */ product SYNTECH SERIAL 0x0001 Serial -- jasper
usbdevs: small addition
Hi, - add an AMD product found on the APU2 - add vendor id for "Synaptics, Inc. - add synaptics fingerprint reader found on recent thinkpads; I couldn't find a proper name for this device in the Linux usb.ids repository so I went with the generic 'Fingerprint Reader" that's also used elsewhere in this file. OK? Index: usbdevs === RCS file: /cvs/src/sys/dev/usb/usbdevs,v retrieving revision 1.710 diff -u -p -r1.710 usbdevs --- usbdevs 27 Jan 2020 15:41:42 - 1.710 +++ usbdevs 22 Feb 2020 15:21:41 - @@ -262,6 +262,7 @@ vendor AGFA 0x06bd AGFA-Gevaert vendor ASIAMD 0x06be Asia Microelectronic Development vendor PHIDGETS0x06c2 Phidgets vendor BIZLINK 0x06c4 Bizlink International +vendor SYNAPTICS 0x06cb Synaptics, Inc. vendor KEYSPAN 0x06cd Keyspan vendor AASHIMA 0x06d6 Aashima Technology vendor LIEBERT 0x06da Liebert @@ -888,6 +889,9 @@ product ALTI2 NEPTUNE3 0x6001 Neptune 3 product AMBIT WLAN 0x0302 WLAN product AMBIT NTL_250 0x6098 NTL 250 cable modem +/* Advanced Micro Devices products */ +product AMD HUB0x7900 Root Hub + /* Amigo Technology products */ product AMIGO RT2870_1 0x9031 RT2870 product AMIGO RT2870_2 0x9041 RT2870 @@ -4167,6 +4171,9 @@ product SWEEX2 LW153 0x0153 LW153 product SWEEX2 LW154 0x0154 LW154 product SWEEX2 LW303 0x0302 LW303 product SWEEX2 LW313 0x0313 LW313 + +/* Synaptics, Inc. products */ +product SYNAPTICS FPRINT 0x00bd Fingerprint Reader /* Syntech Information products */ product SYNTECH SERIAL 0x0001 Serial
tcpdump: fix crash with invalid usb packets
Hi, When using -X/-x/-A with tcpdump on a packet where sizeof(*uph) is larger than 'length' we end up passing a negative value as the length to default_print(), which wraps around and suddenly we're attempting to print 4294976281 elements. Found with AFL. OK? Index: print-usbpcap.c === RCS file: /cvs/src/usr.sbin/tcpdump/print-usbpcap.c,v retrieving revision 1.2 diff -u -p -r1.2 print-usbpcap.c --- print-usbpcap.c 12 Feb 2020 20:07:55 - 1.2 +++ print-usbpcap.c 21 Feb 2020 16:11:45 - @@ -40,7 +40,7 @@ usbpcap_if_print(u_char *user, const str ts_print(&h->ts); /* check length */ - if (caplen < sizeof(uint16_t)) + if (caplen < sizeof(uint16_t) || length < sizeof(*uph)) goto trunc; uph = (struct usbpcap_pkt_hdr *)p; -- jasper
Re: piixpm(4) add support for newer AMD chipsets
On Mon, Dec 16, 2019 at 12:37:51PM +0100, Claudio Jeker wrote: > This diff should add support for newer smbus controllers used on newer AMD > chipsets. Especially Hudson-2 and Kerncz based chipsets. On my Ryzen 5 the > iic(4) busses attach but there is nothing detected on them (well possible > that I missed something). I also implemented the up to 4 busses available > on chipsets of the SBx00 series (on Hudson-2 and Kerncz only 2 ports). > > I would be interested if on systems with Ryzen CPUs something attaches to > those iic(4) busses. Could be that I missed something and fail to properly > access the bus. > -- > :wq Claudio On a ThinkPad x395 with: cpu0: AMD Ryzen 7 PRO 3700U w/ Radeon Vega Mobile Gfx, 2296.08 MHz, 17-18-01 I observe this change in dmesg: -"AMD FCH SMBus" rev 0x61 at pci0 dev 20 function 0 not configured +piixpm0 at pci0 dev 20 function 0 "AMD FCH SMBus" rev 0x61: polling +iic0 at piixpm0 +iic1 at piixpm0 Full dmesg below: OpenBSD 6.6-current (GENERIC.MP) #1: Mon Dec 16 20:44:36 CET 2019 jas...@tau.office.jasper.la:/sys/arch/amd64/compile/GENERIC.MP real mem = 14888513536 (14198MB) avail mem = 14424879104 (13756MB) mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 3.1 @ 0xb9ecc000 (63 entries) bios0: vendor LENOVO version "R13ET39W(1.13 )" date 10/11/2019 bios0: LENOVO 20NLCTO1WW acpi0 at bios0: ACPI 5.0 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP SSDT SSDT SSDT MSDM SLIC BATB HPET APIC MCFG SBST WSMT IVRS SSDT CRAT CDIT FPDT SSDT SSDT SSDT UEFI acpi0: wakeup devices GPP0(S3) GPP1(S3) GPP2(S3) GPP3(S3) GPP4(S3) L850(S3) GPP5(S3) GPP6(S3) GP17(S3) XHC0(S3) XHC1(S3) GP18(S3) LID_(S3) SLPB(S3) acpitimer0 at acpi0: 3579545 Hz, 32 bits acpihpet0 at acpi0: 14318180 Hz acpimadt0 at acpi0 addr 0xfee0: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: AMD Ryzen 7 PRO 3700U w/ Radeon Vega Mobile Gfx, 2296.00 MHz, 17-18-01 cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu0: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache cpu0: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative cpu0: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges cpu0: apic clock running at 24MHz cpu0: mwait min=64, max=64, C-substates=1.1, IBE cpu1 at mainbus0: apid 1 (application processor) cpu1: AMD Ryzen 7 PRO 3700U w/ Radeon Vega Mobile Gfx, 2295.67 MHz, 17-18-01 cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu1: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache cpu1: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative cpu1: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative cpu1: smt 1, core 0, package 0 cpu2 at mainbus0: apid 2 (application processor) cpu2: AMD Ryzen 7 PRO 3700U w/ Radeon Vega Mobile Gfx, 2295.67 MHz, 17-18-01 cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,TCE,TOPEXT,CPCTR,DBKP,PCTRL3,MWAITX,ITSC,FSGSBASE,BMI1,AVX2,SMEP,BMI2,RDSEED,ADX,SMAP,CLFLUSHOPT,SHA,IBPB,XSAVEOPT,XSAVEC,XGETBV1,XSAVES cpu2: 64KB 64b/line 4-way I-cache, 32KB 64b/line 8-way D-cache, 512KB 64b/line 8-way L2 cache, 4MB 64b/line 16-way L3 cache cpu2: ITLB 64 4KB entries fully associative, 64 4MB entries fully associative cpu2: DTLB 64 4KB entries fully associative, 64 4MB entries fully associative cpu2: smt 0, core 1, package 0 cpu3 at mainbus0: apid 3 (application processor) cpu3: AMD Ryzen 7 PRO 3700U w/ Radeon Vega Mobile Gfx, 2295.67 MHz, 17-18-01 cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,PCLMUL,MWAIT,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,NXE,MMXX,FFXSR,PAGE1GB,RDTSCP,LONG,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,SKINIT,T
Re: vmctl: print root user in status owner field
> On 14 Dec 2019, at 02:16, Klemens Nanni wrote: > > With "owner root:wheel" (any group) the `vmctl status' output > will omit the "root" part in the OWNER column: > > vm "generic" { > owner "root:vms" > ... > } > > $ vmctl status > ID PID VCPUS MAXMEM CURMEM TTYOWNERSTATE NAME > 1 - 1512M - - :vms stopped generic > > It only omits it if the user is root, presumably to say "only the group > matters". > > I find this special case confusing as it looks incomplete, instead just > print whatever is configured: > > $ ./obj/vmctl status > ID PID VCPUS MAXMEM CURMEM TTYOWNERSTATE NAME > 1 - 1512M - - root:vms stopped generic > > Feedback? OK? > > > Index: vmctl.c > === > RCS file: /cvs/src/usr.sbin/vmctl/vmctl.c,v > retrieving revision 1.72 > diff -u -p -r1.72 vmctl.c > --- vmctl.c 12 Dec 2019 03:53:38 - 1.72 > +++ vmctl.c 14 Dec 2019 00:54:23 - > @@ -768,8 +768,6 @@ print_vm_info(struct vmop_info_result *l > (void)strlcpy(user, name, sizeof(user)); > /* get group name */ > if (vmi->vir_gid != -1) { > - if (vmi->vir_uid == 0) > - *user = '\0'; > name = group_from_gid(vmi->vir_gid, 1); > if (name == NULL) > (void)snprintf(group, sizeof(group), > I prefer this output as it’s explicit about the owner. OK with me. Cheers, Jasper
Re: [PATCH] add support for versions with '-' before a/b/rc
Hello Matija, Could you please provide a testcase for inclusion in src/regress/usr.bin/pkg-config too? Also, is there a particular port or pkg-config file in the wild that you ran into which exhibits this particular pattern? Cheers, Jasper > On 12 Dec 2019, at 18:28, Matija Skala wrote: > > From fa66eb42d0bd2fec7b364644684e6a4cc9ae9baa Mon Sep 17 00:00:00 2001 > From: Matija Skala > Date: Thu, 28 Nov 2019 19:24:42 +0100 > Subject: [PATCH] add support for versions with '-' before a/b/rc > > --- > usr.bin/pkg-config/pkg-config | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/usr.bin/pkg-config/pkg-config b/usr.bin/pkg-config/pkg-config > index 6dfbd3224eb..c050e9b058e 100644 > --- a/usr.bin/pkg-config/pkg-config > +++ b/usr.bin/pkg-config/pkg-config > @@ -674,13 +674,13 @@ sub compare > # is there a valid non-numeric suffix to deal with later? > # accepted are (in order): a(lpha) < b(eta) < rc < ' '. > # suffix[0] is the 'alpha' part, suffix[1] is the '1' part in 'alpha1'. > - if ($a =~ s/(rc|beta|b|alpha|a)(\d+)$//) { > + if ($a =~ s/-?(rc|beta|b|alpha|a)(\d+)$//) { > say_debug("valid suffix $1$2 found in $a$1$2."); > $suffix_a[0] = $1; > $suffix_a[1] = $2; > } > > - if ($b =~ s/(rc|beta|b|alpha|a)(\d+)$//) { > + if ($b =~ s/-?(rc|beta|b|alpha|a)(\d+)$//) { > say_debug("valid suffix $1$2 found in $b$1$2."); > $suffix_b[0] = $1; > $suffix_b[1] = $2; > >
Re: un-boolean_t sys/ddb/
> On 5 Nov 2019, at 13:55, Martin Pieuchot wrote: > > Take the safe approach of converting `boolean_t' to `int', `TRUE' to `1' > and `FALSE' to `0'. > > This is to reduce the typedef mess that requires pulling MD/MI headers. > > Per-arch ddb code will follow, ok? I’m ok with the diff (yay for cleaning that mess), a few trivial nits: > Index: ddb/db_command.c > @@ -199,15 +199,14 @@ db_command(struct db_command **last_cmdp > int t; > charmodif[TOK_STRING_SIZE]; > db_expr_t addr, count; > - boolean_t have_addr = FALSE; > - int result; > + int result, have_addr = 0; You could merge this with the ‘int t’ a few lines above. > Index: ddb/db_examine.c > @@ -145,7 +145,7 @@ db_examine(db_addr_t addr, char *fmt, in > for (i = 0; i < size; i++) { > value = > db_get_value(addr+bytes, 1, > - FALSE); > + 0); This and the next ones can now go on the same line as db_get_value(), no? > db_printf("%02lx", > (long)value); > bytes++; > @@ -159,7 +159,7 @@ db_examine(db_addr_t addr, char *fmt, in > /* Print chars, use . for non-printables */ > while (bytes--) { > value = db_get_value(addr + incr, 1, > - FALSE); > + 0); Idem. > @@ -198,7 +198,7 @@ db_examine(db_addr_t addr, char *fmt, in > incr = 0; > for (;;) { > value = db_get_value(addr + incr, 1, > - FALSE); > + 0); Idem. Cheers, Jasper
Re: vmd(8) i8042 device implementation questions
On Sat, Jun 01, 2019 at 06:12:16PM -0500, Katherine Rohl wrote: > Couple questions: > > > This means no interrupt will be injected. I'm not sure if that's what you > > want. > > See vm.c: vcpu_exit_inout(..). It looks like you may have manually asserted > > the > > IRQ in this file, which is a bit different than what we do in other > > devices. That > > may be okay, though. > > The device can assert zero, one, or two IRQs depending on the state of the > input ports. Are we capable of asserting two IRQs at once through > vcpu_exit_i8042? > > > For this IRQ, if it's edge triggered, please assert then deassert the line. > > The i8259 code should handle that properly. What you have here is a level > > triggered interrupt (eg, the line will stay asserted until someone > > does a 1 -> 0 transition below). Same goes for the next few cases. > > Would asserting the IRQs through the exit function handle this for me if > that???s possible? > > > Also, please bump the revision in the vcpu struct for send/receive > > as we will be sending a new struct layout now. > > Where exactly? The file revision? That would be VM_DUMP_VERSION in vmd.h I reckon. -- jasper
vmd: tweak mc146818 periodic interrupt updating
Hi, Whilst looking at the mc146818 code in vmd I noticed something that initially struck me as a pasto as the same code is present in the rtc_update_regb() function. However it led me to look at how other emulators handle the updating of registers. Based on that here's a diff to only reschedule the periodic interrupt after updating register A if something changed in register A. When updating register A we were checking in register B if the PIE bit was set in order to decide if rtc_reschedule_per needed to be called. if that bit was changed then the timer rate would already have been adjusted by rtc_update_regb so the call from rtc_update_rega is not needed. This now matches what qemu and other emulators are doing too. This has been running fine for a few days in a number of VMs. OK? Index: mc146818.c === RCS file: /cvs/src/usr.sbin/vmd/mc146818.c,v retrieving revision 1.18 diff -u -p -r1.18 mc146818.c --- mc146818.c 12 Jul 2018 10:15:44 - 1.18 +++ mc146818.c 26 May 2019 12:13:32 - @@ -216,7 +216,7 @@ rtc_update_rega(uint32_t data) __func__); rtc.regs[MC_REGA] = data; - if (rtc.regs[MC_REGB] & MC_REGB_PIE) + if ((rtc.regs[MC_REGA] ^ data) & 0x0f) rtc_reschedule_per(); } -- jasper
rtcdrain: fix function reference in comment
Hi, This appears to have been wrong from the import, the comment explaining why rtcdrain() is needed is in rtcstart() in the same file. OK? Index: amd64/isa/clock.c === RCS file: /cvs/src/sys/arch/amd64/isa/clock.c,v retrieving revision 1.28 diff -u -p -r1.28 clock.c --- amd64/isa/clock.c 27 Jul 2018 21:11:31 - 1.28 +++ amd64/isa/clock.c 21 May 2019 18:36:13 - @@ -291,7 +291,7 @@ rtcdrain(void *v) /* * Drain any un-acknowledged RTC interrupts. - * See comment in cpu_initclocks(). + * See comment in rtcstart(). */ while (mc146818_read(NULL, MC_REGC) & MC_REGC_PF) ; /* Nothing. */ Index: i386/isa/clock.c === RCS file: /cvs/src/sys/arch/i386/isa/clock.c,v retrieving revision 1.53 diff -u -p -r1.53 clock.c --- i386/isa/clock.c30 Jul 2018 14:19:12 - 1.53 +++ i386/isa/clock.c21 May 2019 18:36:13 - @@ -192,7 +192,7 @@ rtcdrain(void *v) /* * Drain any un-acknowledged RTC interrupts. -* See comment in cpu_initclocks(). +* See comment in rtcstart(). */ while (mc146818_read(NULL, MC_REGC) & MC_REGC_PF) ; /* Nothing. */ -- jasper
Re: sysupgrade: no new snapshot -> no error
> On 3 May 2019, at 17:04, Christian Weisgerber wrote: > > It is not an error condition if no new snapshot is available. > (Is it?) > > Index: sysupgrade.sh > === > RCS file: /cvs/src/usr.sbin/sysupgrade/sysupgrade.sh,v > retrieving revision 1.9 > diff -u -p -r1.9 sysupgrade.sh > --- sysupgrade.sh 3 May 2019 13:04:40 - 1.9 > +++ sysupgrade.sh 3 May 2019 14:15:41 - > @@ -115,7 +115,8 @@ cd ${SETSDIR} > unpriv -f SHA256.sig ftp -Vmo SHA256.sig ${URL}SHA256.sig > > if cmp -s /var/db/installed.SHA256.sig SHA256.sig && ! $FORCE; then > - ug_err "Already on latest snapshot." > + echo "Already on latest snapshot." > + exit 0 > fi > > _KEY=openbsd-${_KERNV[0]%.*}${_KERNV[0]#*.}-base.pub > -- > Christian "naddy" Weisgerber na...@mips.inka.de > I don’t think it should be an error condition because it effectively means you’re up-to-date -- which is a good thing. Cheers, Jasper
httpd: allow for longer "tls ciphers"
Hi, The current limit on 'tls ciphers' is 255 characters which prevents using the cipher list as recommended by https://mozilla.github.io/server-side-tls/ssl-config-generator/ for example (clocks in just shy of 300 characters). tls ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256" results in a "ciphers too long" error. I'm aware that 'secure' and 'compat' are available too, but perhaps we can increase the limit a bit? Cheers, Jasper Index: httpd.h === RCS file: /cvs/src/usr.sbin/httpd/httpd.h,v retrieving revision 1.138 diff -u -p -r1.138 httpd.h --- httpd.h 20 Jun 2018 16:43:05 - 1.138 +++ httpd.h 17 Aug 2018 12:42:37 - @@ -60,7 +60,7 @@ #define HTTPD_LOGVIS VIS_NL|VIS_TAB|VIS_CSTYLE #define HTTPD_TLS_CERT "/etc/ssl/server.crt" #define HTTPD_TLS_KEY "/etc/ssl/private/server.key" -#define HTTPD_TLS_CONFIG_MAX 255 +#define HTTPD_TLS_CONFIG_MAX 512 #define HTTPD_TLS_CIPHERS "compat" #define HTTPD_TLS_DHE_PARAMS "none" #define HTTPD_TLS_ECDHE_CURVES "default" -- jasper
Re: w: don't print any header with -h
On Thu, Dec 14, 2017 at 01:35:18PM +0100, Martijn van Duren wrote: > Hello Jasper, > > On 12/14/17 13:22, Jasper Lievisse Adriaanse wrote: > > Hi, > > > > currently w(1) on OpenBSD differs from other implementations > > (GNU/Darwin/FreeBSD/SmartOS) in that 'w -h' does print the > > 'USER TTY FROM ...' header whereas the others don't. > > > > Is there a specific reason for it or could this diff below go in? > > I don't know about the history to tell you, and I don't particularly > care about this change either way. > > Do note that our uptime(1) says: > This is the ???heading??? information from w(1). > > This has been removed from the FreeBSD uptime manpage. > So if we want to do the same thing, you should also adjust uptime.1. That still _is_ the heading information from w(1) when ran without flags so I don't think uptime.1 needs any changes. > > Index: w.c > > === > > RCS file: /cvs/src/usr.bin/w/w.c,v > > retrieving revision 1.63 > > diff -u -p -r1.63 w.c > > --- w.c 27 Jul 2017 14:17:34 - 1.63 > > +++ w.c 14 Dec 2017 12:19:34 - > > @@ -224,7 +224,8 @@ main(int argc, char *argv[]) > > > > #define HEADER "USERTTY FROM LOGIN@ IDLE WHAT" > > #define WUSED (sizeof(HEADER) - sizeof("WHAT")) > > - (void)puts(HEADER); > > + if (header) > > + (void)puts(HEADER); > > > > kp = kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(*kp), &nentries); > > if (kp == NULL) > > > -- jasper
w: don't print any header with -h
Hi, currently w(1) on OpenBSD differs from other implementations (GNU/Darwin/FreeBSD/SmartOS) in that 'w -h' does print the 'USER TTY FROM ...' header whereas the others don't. Is there a specific reason for it or could this diff below go in? Index: w.c === RCS file: /cvs/src/usr.bin/w/w.c,v retrieving revision 1.63 diff -u -p -r1.63 w.c --- w.c 27 Jul 2017 14:17:34 - 1.63 +++ w.c 14 Dec 2017 12:19:34 - @@ -224,7 +224,8 @@ main(int argc, char *argv[]) #define HEADER "USERTTY FROM LOGIN@ IDLE WHAT" #define WUSED (sizeof(HEADER) - sizeof("WHAT")) - (void)puts(HEADER); + if (header) + (void)puts(HEADER); kp = kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(*kp), &nentries); if (kp == NULL) -- jasper
Re: panic when invalid randomness source is provided
On Sun, Nov 05, 2017 at 06:05:29PM +, Jasper Lievisse Adriaanse wrote: > Hi, > > Currently we appear to silently drop randomness if it comes from an invalid > source. Should we not panic in this case? > While here, update the comment for enqueue_randomness() after -r1.188. > > OK? Please disregard this, I'm working on a larger diff now that renders this particular diff unneeded. -- jasper
panic when invalid randomness source is provided
Hi, Currently we appear to silently drop randomness if it comes from an invalid source. Should we not panic in this case? While here, update the comment for enqueue_randomness() after -r1.188. OK? Index: rnd.c === RCS file: /cvs/src/sys/dev/rnd.c,v retrieving revision 1.193 diff -u -p -r1.193 rnd.c --- rnd.c 30 Jul 2017 21:40:14 - 1.193 +++ rnd.c 5 Nov 2017 18:01:08 - @@ -276,13 +276,11 @@ rnd_qlen(void) } /* - * This function adds entropy to the entropy pool by using timing - * delays. It uses the timer_rand_state structure to make an estimate - * of how many bits of entropy this call has added to the pool. + * This function adds entropy to the entropy queue by using timing + * delays. * - * The number "val" is also added to the pool - it should somehow describe - * the type of event which just happened. Currently the values of 0-255 - * are for keyboard scan codes, 256 and upwards - for interrupts. + * The number "state" is also added to the queue - it should somehow describe + * the type of event which just happened. */ void enqueue_randomness(u_int state, u_int val) @@ -292,7 +290,7 @@ enqueue_randomness(u_int state, u_int va #ifdef DIAGNOSTIC if (state >= RND_SRC_NUM) - return; + panic("Invalid randomness source provided: %d", state); #endif if (timeout_initialized(&rnd_timeout)) -- jasper
Re: Remove DDB_STRUCTINFO
On Mon, Sep 11, 2017 at 10:01:27AM +, Martin Pieuchot wrote: > Now that dlg@ implemented 'show struct' using CTF, which makes it > available in GENERIC kernel we can retire DDB_STRUCTINFO. > > Diff below does that, ok? I suggested the same dlg, so OK with me. Cheers, Jasper > Index: conf/files > === > RCS file: /cvs/src/sys/conf/files,v > retrieving revision 1.651 > diff -u -p -r1.651 files > --- conf/files11 Aug 2017 20:50:15 - 1.651 > +++ conf/files11 Sep 2017 09:56:09 - > @@ -609,7 +609,6 @@ file ddb/db_lex.c ddb > file ddb/db_output.c ddb > file ddb/db_prof.c ddb & ddbprof & !gprof > file ddb/db_run.cddb > -file ddb/db_struct.c ddb & ddb_struct > file ddb/db_sym.cddb > file ddb/db_trap.c ddb > file ddb/db_variables.c ddb > Index: ddb//db_command.c > === > RCS file: /cvs/src/sys/ddb/db_command.c,v > retrieving revision 1.76 > diff -u -p -r1.76 db_command.c > --- ddb//db_command.c 6 Sep 2017 04:47:26 - 1.76 > +++ ddb//db_command.c 11 Sep 2017 09:03:36 - > @@ -581,9 +581,6 @@ struct db_command db_show_cmds[] = { > { "nfsnode",db_nfsnode_print_cmd, 0, NULL }, > #endif > { "object", db_object_print_cmd,0, NULL }, > -#ifdef DDB_STRUCT > - { "offset", db_struct_offset_cmd, CS_OWN, NULL }, > -#endif > { "page", db_page_print_cmd, 0, NULL }, > { "panic", db_show_panic_cmd, 0, NULL }, > { "pool", db_pool_print_cmd, 0, NULL }, > Index: ddb//db_struct.c > === > RCS file: ddb//db_struct.c > diff -N ddb//db_struct.c > --- ddb//db_struct.c 1 Sep 2015 05:26:10 - 1.4 > +++ /dev/null 1 Jan 1970 00:00:00 - > @@ -1,277 +0,0 @@ > -/* $OpenBSD: db_struct.c,v 1.4 2015/09/01 05:26:10 jsg Exp $ */ > - > -/* > - * Copyright (c) 2009 Miodrag Vallat. > - * > - * Permission to use, copy, modify, and distribute this software for any > - * purpose with or without fee is hereby granted, provided that the above > - * copyright notice and this permission notice appear in all copies. > - * > - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES > - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > - */ > - > -/* > - * ddb routines to describe struct information > - */ > - > -#include > -#include > - > -#include > - > -#include > -#include > -#include > -#include > -#include > -#include > -#include > - > -#include "db_structinfo.h" > - > -void db_struct_print_field(uint, int, db_expr_t); > - > -/* > - * Flags to pass db_struct_printf(). > - */ > - > -#define DBSP_STRUCT_NAME0x01/* prepend struct name */ > -#define DBSP_VALUE 0x02/* display field value */ > - > -void > -db_struct_print_field(uint fidx, int flags, db_expr_t baseaddr) > -{ > - const struct ddb_field_info *field; > - const struct ddb_struct_info *struc; > - db_expr_t value; > - uint tmp; > - size_t namelen; > - int width, basecol, curcol; > - char tmpfmt[28]; > - > - field = &ddb_field_info[fidx]; > - basecol = 0; > - > - if (ISSET(flags, DBSP_STRUCT_NAME)) { > - struc = &ddb_struct_info[field->sidx]; > - namelen = strlen(ddb_structfield_strings + struc->name); > - db_printf("%-30s ", ddb_structfield_strings + struc->name); > - if (namelen > 30) > - basecol += namelen + 1; > - else > - basecol += 30 + 1; > - } > - > - namelen = strlen(ddb_structfield_strings + field->name); > - if (field->nitems == 1) { > - db_printf("%-30s ", ddb_structfield_strings + field->name); > - if (namelen > 30) > - basecol += namelen + 1; > - else > - basecol += 30 + 1; > - } else { > - width = 30 - 2; > - tmp = field->nitems; > - while (tmp != 0) { > - width--; > - tmp /= 10; > - } > - if (namelen >= width) { > - db_printf("%s[%hu] ", > - ddb_structfield_strings + field->name, > - field->nitems); > - baseco
Re: [PATCH] urng.4 - Altusmetrum -> Altus Metrum
On Fri, Sep 08, 2017 at 10:25:41PM +0100, Raf Czlonka wrote: > Hi all, > > According to their web pages[0][1] Altus Metrum name comprises two > words - both capitalised. > > [0] http://altusmetrum.org/ > [1] http://shop.gag.com/about-magento-demo-store > > Regards, > > Raf This is indeed correct, thanks! > Index: share/man/man4/urng.4 > === > RCS file: /cvs/src/share/man/man4/urng.4,v > retrieving revision 1.2 > diff -u -p -r1.2 urng.4 > --- share/man/man4/urng.4 29 Aug 2017 06:12:36 - 1.2 > +++ share/man/man4/urng.4 8 Sep 2017 21:13:14 - > @@ -34,14 +34,14 @@ and stirs it into the system entropy poo > .Xr add_true_randomness 9 . > .Sh HARDWARE > The following devices are supported by this driver: > -.Bl -tag -width "Altusmetrum" > +.Bl -tag -width "Altus Metrum" > .It Araneus Alea II > Capable of delivering 100kbit/sec of hardware-generated entropy. > The product documentation states that the USB interface used by the > Alea II is the same as that used by its predecessor the Alea I; > theoretically this means that the Alea I should work but this has not > been tested. > -.It Altusmetrum ChaosKey 1.0 > +.It Altus Metrum ChaosKey 1.0 > This device is capable of providing entropy at 10Mbit/s. > .El > .Sh SEE ALSO > -- jasper
Re: [PATCH] vm.conf: Clarify VM name constraints
On Wed, Aug 30, 2017 at 05:11:26PM -0700, Carlos Cardenas wrote: > Add VM name constraints to match those in vmctl.8 manpage. > > Comments? Ok? Applied, thanks. > diff --git usr.sbin/vmd/vm.conf.5 usr.sbin/vmd/vm.conf.5 > index d1e68dbce5d..77a7a4e8cea 100644 > --- usr.sbin/vmd/vm.conf.5 > +++ usr.sbin/vmd/vm.conf.5 > @@ -108,7 +108,9 @@ section starts with a declaration of the virtual machine > .Ar name : > .Bl -tag -width Ds > .It Ic vm Ar name Brq ... > -This name can be any string, and is typically a hostname. > +The name can be any alphanumeric string along with '.', '-', and '_' > +characters. However, it cannot start with '.', '-', or '_'. > +Typically the name is a hostname. > .El > .Pp > Followed by a block of parameters that is enclosed in curly brackets: > -- > 2.14.1 > -- jasper
combined usb rng driver
Hi Instead of adding a new driver for each USB RNG device here's a diff to combine the existing ualea(4) driver and support for a new device (ChaosKey support by abieber@) into urng(4). The plan is to merge uonerng(4) into it as well as support for future devices into this single driver. This was tested by abieber@ with a ChaosKey and Sean with an Alea II. OK? Cheers, Jasper Index: share/man/man4/Makefile === RCS file: /cvs/src/share/man/man4/Makefile,v retrieving revision 1.656 diff -u -p -r1.656 Makefile --- share/man/man4/Makefile 25 Aug 2017 11:17:35 - 1.656 +++ share/man/man4/Makefile 26 Aug 2017 19:44:32 - @@ -61,7 +61,7 @@ MAN= aac.4 ac97.4 acphy.4 \ stp.4 sv.4 switch.4 sym.4 tcic.4 tcp.4 termios.4 tht.4 ti.4 tl.4 \ tlphy.4 thmc.4 tpm.4 tqphy.4 trm.4 trunk.4 tsl.4 tty.4 tun.4 tap.4 \ twe.4 \ - txp.4 txphy.4 ualea.4 uaudio.4 uark.4 uath.4 ubcmtp.4 uberry.4 ubsa.4 \ + txp.4 txphy.4 uaudio.4 uark.4 uath.4 ubcmtp.4 uberry.4 ubsa.4 \ ubsec.4 \ ucom.4 uchcom.4 ucycom.4 uslhcom.4 udav.4 udcf.4 udl.4 udp.4 udsbr.4 \ uftdi.4 ugen.4 ugl.4 ugold.4 uguru.4 uhci.4 uhid.4 uhidev.4 uipaq.4 \ @@ -69,7 +69,7 @@ MAN= aac.4 ac97.4 acphy.4 \ ukphy.4 ulpt.4 umass.4 umb.4 umbg.4 umcs.4 umct.4 umidi.4 umodem.4 \ ums.4 umsm.4 unix.4 uonerng.4 uow.4 uoaklux.4 uoakrh.4 uoakv.4 upd.4 \ upgt.4 upl.4 uplcom.4 ural.4 ure.4 url.4 urlphy.4 \ - urndis.4 urtw.4 urtwn.4 usb.4 uscom.4 uslcom.4 usps.4 \ + urndis.4 urng.4 urtw.4 urtwn.4 usb.4 uscom.4 uslcom.4 usps.4 \ uthum.4 uticom.4 utpms.4 utwitch.4 utrh.4 uts.4 utvfu.4 uvideo.4 \ uvisor.4 uvscom.4 uwacom.4 \ vether.4 vga.4 vgafb.4 vge.4 \ Index: share/man/man4/ualea.4 === RCS file: share/man/man4/ualea.4 diff -N share/man/man4/ualea.4 --- share/man/man4/ualea.4 16 Apr 2015 08:56:53 - 1.1 +++ /dev/null 1 Jan 1970 00:00:00 - @@ -1,54 +0,0 @@ -.\"$OpenBSD: ualea.4,v 1.1 2015/04/16 08:56:53 mpi Exp $ -.\" -.\" Copyright (c) 2007 Marc Balmer -.\" Copyright (c) 2015 Sean Levy -.\" -.\" Permission to use, copy, modify, and distribute this software for any -.\" purpose with or without fee is hereby granted, provided that the above -.\" copyright notice and this permission notice appear in all copies. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -.\" -.Dd $Mdocdate: April 16 2015 $ -.Dt UALEA 4 -.Os -.Sh NAME -.Nm ualea -.Nd Araneus Alea II USB TRNG -.Sh SYNOPSIS -.Cd "ualea* at uhub?" -.Sh DESCRIPTION -The -.Nm -driver provides support for the Araneus Alea II, a USB true random -number generator (TRNG). -It delivers 100kbit/sec of hardware-generated entropy. -.Nm -reads raw entropy from the Alea II and uses -.Xr add_true_randomness 9 -to add it to the system entropy pool. -.Pp -The product documentation states that the USB interface used by the -Alea II is the same as that used by its predecessor the Alea I; -theoretically this means that the Alea I should work but this has not -been tested. -.Sh SEE ALSO -.Xr intro 4 , -.Xr usb 4 , -.Xr add_true_randomness 9 -.Sh HISTORY -The -.Nm -driver first appeared in -.Ox 5.7 . -.Sh AUTHORS -The -.Nm -driver was written by -.An Sean Levy Aq Mt att...@stalphonsos.com . Index: share/man/man4/urng.4 === RCS file: share/man/man4/urng.4 diff -N share/man/man4/urng.4 --- /dev/null 1 Jan 1970 00:00:00 - +++ share/man/man4/urng.4 26 Aug 2017 20:34:54 -0000 @@ -0,0 +1,63 @@ +.\"$OpenBSD$ +.\" +.\" Copyright (c) 2015 Sean Levy +.\" Copyright (c) 2017 Jasper Lievisse Adriaanse +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RES
systat, widen pf IF column
Hi, This diff widens the IF column in 'systat rules' by one character. Reason for this is that otherwise vether interfaces get cut off and lose their index. vether interfaces are common enough I think to warrant this widening. However this might lead to confusion if there are interfaces with two digits. If that's common I can go +2 in this change. OK for +1 or +2? Index: pftop.c === RCS file: /cvs/src/usr.bin/systat/pftop.c,v retrieving revision 1.34 diff -u -p -r1.34 pftop.c --- pftop.c 13 Apr 2016 05:25:45 - 1.34 +++ pftop.c 18 Dec 2016 13:39:51 - @@ -140,7 +140,7 @@ field_def fields[] = { {"LOG", 1, 3, 2, FLD_ALIGN_LEFT, -1, 0, 0, 0}, {"QUICK", 1, 1, 1, FLD_ALIGN_LEFT, -1, 0, 0, 0}, {"KS", 1, 1, 1, FLD_ALIGN_LEFT, -1, 0, 0, 0}, - {"IF", 4, 6, 1, FLD_ALIGN_LEFT, -1, 0, 0, 0}, + {"IF", 4, 7, 1, FLD_ALIGN_LEFT, -1, 0, 0, 0}, {"INFO", 40, 80, 1, FLD_ALIGN_LEFT, -1, 0, 0, 0}, {"MAX", 3, 5, 2, FLD_ALIGN_RIGHT, -1, 0, 0}, {"RATE", 5, 8, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, -- jasper
db_{interface,trace}.c: ansify function definitions
OK? Index: alpha/alpha/db_trace.c === RCS file: /cvs/src/sys/arch/alpha/alpha/db_trace.c,v retrieving revision 1.18 diff -u -p -r1.18 db_trace.c --- alpha/alpha/db_trace.c 19 Sep 2016 17:59:18 - 1.18 +++ alpha/alpha/db_trace.c 19 Sep 2016 18:00:58 - @@ -171,12 +171,8 @@ disp(x) * symbols available. */ void -db_stack_trace_print(addr, have_addr, count, modif, pr) - db_expr_t addr; - int have_addr; - db_expr_t count; - char*modif; - int (*pr)(const char *, ...); +db_stack_trace_print(db_expr_t addr, int have_addr, db_expr_t count, +char *modif, int (*pr)(const char *, ...)) { u_long *frame; int i, framesize; Index: arm/arm/db_trace.c === RCS file: /cvs/src/sys/arch/arm/arm/db_trace.c,v retrieving revision 1.7 diff -u -p -r1.7 db_trace.c --- arm/arm/db_trace.c 19 Sep 2016 17:59:18 - 1.7 +++ arm/arm/db_trace.c 19 Sep 2016 18:00:58 - @@ -81,12 +81,8 @@ db_regs_t ddb_regs; #define FR_RFP (-3) void -db_stack_trace_print(addr, have_addr, count, modif, pr) - db_expr_t addr; - int have_addr; - db_expr_t count; - char*modif; - int (*pr) (const char *, ...); +db_stack_trace_print(db_expr_t addr, int have_addr, db_expr_t count, +char *modif, int (*pr)(const char *, ...))) { u_int32_t *frame, *lastframe; char c, *cp = modif; Index: hppa/hppa/db_interface.c === RCS file: /cvs/src/sys/arch/hppa/hppa/db_interface.c,v retrieving revision 1.37 diff -u -p -r1.37 db_interface.c --- hppa/hppa/db_interface.c1 Mar 2016 21:35:13 - 1.37 +++ hppa/hppa/db_interface.c19 Sep 2016 18:00:58 - @@ -134,10 +134,7 @@ Debugger() } void -db_read_bytes(addr, size, data) - vaddr_t addr; - size_t size; - char *data; +db_read_bytes(vaddr_t addr, size_t size, char *data) { register char *src = (char *)addr; @@ -146,10 +143,7 @@ db_read_bytes(addr, size, data) } void -db_write_bytes(addr, size, data) - vaddr_t addr; - size_t size; - char *data; +db_write_bytes(vaddr_t addr, size_t size, char *data) { register char *dst = (char *)addr; @@ -166,8 +160,7 @@ db_write_bytes(addr, size, data) * Print trap reason. */ void -kdbprinttrap(type, code) - int type, code; +kdbprinttrap(int type, int code) { type &= ~T_USER;/* just in case */ db_printf("kernel: "); @@ -182,9 +175,7 @@ kdbprinttrap(type, code) * db_ktrap - field a BPT trap */ int -db_ktrap(type, code, regs) - int type, code; - db_regs_t *regs; +db_ktrap(int type, int code, db_regs_t *regs) { extern label_t *db_recover; int s; @@ -226,19 +217,14 @@ db_ktrap(type, code, regs) * Any address is allowed for now. */ int -db_valid_breakpoint(addr) - db_addr_t addr; +db_valid_breakpoint(db_addr_t addr) { return (1); } void -db_stack_trace_print(addr, have_addr, count, modif, pr) - db_expr_t addr; - int have_addr; - db_expr_t count; - char*modif; - int (*pr)(const char *, ...); +db_stack_trace_print(db_expr_t addr, int have_addr, db_expr_t count, +char *modif, int (*pr)(const char *, ...)) { register_t *fp, pc, rp, *argp; db_sym_t sym; Index: m88k/m88k/db_trace.c === RCS file: /cvs/src/sys/arch/m88k/m88k/db_trace.c,v retrieving revision 1.15 diff -u -p -r1.15 db_trace.c --- m88k/m88k/db_trace.c9 Mar 2016 08:58:50 - 1.15 +++ m88k/m88k/db_trace.c19 Sep 2016 18:00:58 - @@ -806,11 +806,8 @@ db_stack_trace_cmd2(db_regs_t *regs, int * printed. */ void -db_stack_trace_print(db_expr_t addr, - int have_addr, - db_expr_t count, - char *modif, - int (*pr)(const char *, ...)) +db_stack_trace_print(db_expr_t addr, int have_addr, db_expr_t count, +char *modif, int (*pr)(const char *, ...)) { enum { Default, Stack, Frame -- jasper
sys/systm.h: drop read_symtab_from_file() proto
This seems to be a leftover from when the actual function itself was removed at some point? Index: systm.h === RCS file: /cvs/src/sys/sys/systm.h,v retrieving revision 1.117 diff -u -p -r1.117 systm.h --- systm.h 13 Sep 2016 08:32:44 - 1.117 +++ systm.h 17 Sep 2016 11:04:10 - @@ -308,7 +308,6 @@ extern int (*mountroot)(void); #if defined(DDB) || defined(KGDB) /* debugger entry points */ void Debugger(void); /* in DDB only */ -intread_symtab_from_file(struct proc *,struct vnode *,const char *); #endif #ifdef BOOT_CONFIG -- jasper
define ELF_CTF in exec_elf.h
Hi, This moves the definition of ELF_CTF into exec_elf.h and adjusts the loadfile_elf.c copies accordingly. OK? Index: share/man/man5/elf.5 === RCS file: /cvs/src/share/man/man5/elf.5,v retrieving revision 1.32 diff -u -p -r1.32 elf.5 --- share/man/man5/elf.57 Sep 2016 18:42:01 - 1.32 +++ share/man/man5/elf.516 Sep 2016 19:16:37 - @@ -877,6 +877,13 @@ fixed-size entries. .Pp Various sections hold program and control information: .Bl -tag -width ".shstrtab" +.It .SUNW_ctf +This section contains the (un)compressed Compact C-Type Format data +describing the object's types and symbols. +This section is of type +.Dv SHT_NOBITS . +The attribute used is +.Dv SHF_ALLOC . .It .bss This section holds uninitialized data that contribute to the program's memory image. Index: sys/ddb/db_ctf.c === RCS file: /cvs/src/sys/ddb/db_ctf.c,v retrieving revision 1.1 diff -u -p -r1.1 db_ctf.c --- sys/ddb/db_ctf.c16 Sep 2016 19:13:17 - 1.1 +++ sys/ddb/db_ctf.c16 Sep 2016 19:16:37 - @@ -56,8 +56,6 @@ static char *db_ctf_decompress(const ch static int db_ctf_print_functions(); static int db_ctf_nsyms(void); -#defineELF_CTF ".SUNW_ctf" - /* * Entrypoint to verify CTF presence, initialize the header, decompress * the data, etc. Index: sys/lib/libsa/loadfile_elf.c === RCS file: /cvs/src/sys/lib/libsa/loadfile_elf.c,v retrieving revision 1.12 diff -u -p -r1.12 loadfile_elf.c --- sys/lib/libsa/loadfile_elf.c13 Sep 2016 18:09:14 - 1.12 +++ sys/lib/libsa/loadfile_elf.c16 Sep 2016 19:16:37 - @@ -234,7 +234,7 @@ ELFNAME(exec)(int fd, Elf_Ehdr *elf, u_l if (shp[i].sh_type == SHT_SYMTAB || shp[i].sh_type == SHT_STRTAB || !strcmp(shstr + shp[i].sh_name, ".debug_line") || - !strcmp(shstr + shp[i].sh_name, ".SUNW_ctf")) { + !strcmp(shstr + shp[i].sh_name, ELF_CTF)) { if (havesyms && (flags & LOAD_SYM)) { PROGRESS(("%s%ld", first ? " [" : "+", (u_long)shp[i].sh_size)); Index: sys/sys/exec_elf.h === RCS file: /cvs/src/sys/sys/exec_elf.h,v retrieving revision 1.63 diff -u -p -r1.63 exec_elf.h --- sys/sys/exec_elf.h 7 Sep 2016 20:12:42 - 1.63 +++ sys/sys/exec_elf.h 16 Sep 2016 19:16:36 - @@ -264,6 +264,7 @@ typedef struct { /* Section names */ #define ELF_BSS ".bss" /* uninitialized data */ #define ELF_DATA".data"/* initialized data */ +#defineELF_CTF ".SUNW_ctf" /* CTF data */ #define ELF_DEBUG ".debug" /* debug */ #define ELF_DYNAMIC ".dynamic" /* dynamic linking information */ #define ELF_DYNSTR ".dynstr" /* dynamic string table */ Index: usr.sbin/vmd/loadfile_elf.c === RCS file: /cvs/src/usr.sbin/vmd/loadfile_elf.c,v retrieving revision 1.18 diff -u -p -r1.18 loadfile_elf.c --- usr.sbin/vmd/loadfile_elf.c 13 Sep 2016 19:07:47 - 1.18 +++ usr.sbin/vmd/loadfile_elf.c 16 Sep 2016 19:16:37 - @@ -779,7 +779,7 @@ elf64_exec(int fd, Elf64_Ehdr *elf, u_lo if (shp[i].sh_type == SHT_SYMTAB || shp[i].sh_type == SHT_STRTAB || !strcmp(shstr + shp[i].sh_name, ".debug_line") || - !strcmp(shstr + shp[i].sh_name, ".SUNW_ctf")) { + !strcmp(shstr + shp[i].sh_name, ELF_CTF)) { if (havesyms && (flags & LOAD_SYM)) { if (lseek(fd, (off_t)shp[i].sh_offset, SEEK_SET) == -1) { Cheers, -- jasper
libsa, stop saving memory
Hi, nothing defines SAVE_MEMORY nor has it been modified since -r1.1. ok to zap it? Index: cread.c === RCS file: /cvs/src/sys/lib/libsa/cread.c,v retrieving revision 1.13 diff -u -p -r1.13 cread.c --- cread.c 18 Jan 2009 21:46:50 - 1.13 +++ cread.c 14 Sep 2016 18:39:23 - @@ -47,11 +47,7 @@ #define zmemcpymemcpy -#ifdef SAVE_MEMORY -#define Z_BUFSIZE 1024 -#else #define Z_BUFSIZE 4096 -#endif static int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */ @@ -210,11 +206,7 @@ open(const char *fname, int mode) goto errout; bzero(s, sizeof(struct sd)); -#ifdef SAVE_MEMORY - if (inflateInit2(&(s->stream), -11) != Z_OK) -#else if (inflateInit2(&(s->stream), -15) != Z_OK) -#endif goto errout; s->stream.next_in = s->inbuf = (unsigned char *)alloc(Z_BUFSIZE); -- jasper
Re: generate pkg-config files at build time
On Tue, Sep 13, 2016 at 06:35:08PM +0200, Martin Natano wrote: > Currently pkg-config files are generated at install time, while they > should be generated at build time like everything else. One reason why > generating files during install is bad is that the two steps might be > run by two differnt users, resulting in permission problems. > > While there I removed the dependency from the install target on the > pkg-config files as this is also not done for libraries and programs. > If you didn't build before install you are fucked anyway. > > Ok? > > natano Makes sense; OK. > Index: lib/libcrypto/Makefile > === > RCS file: /cvs/src/lib/libcrypto/Makefile,v > retrieving revision 1.5 > diff -u -p -r1.5 Makefile > --- lib/libcrypto/Makefile11 Sep 2016 14:31:02 - 1.5 > +++ lib/libcrypto/Makefile12 Sep 2016 18:19:53 - > @@ -431,10 +431,11 @@ distribution: > ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 \ > ${.CURDIR}/x509v3.cnf ${DESTDIR}/etc/ssl/x509v3.cnf > > +all: ${PC_FILES} > ${PC_FILES}: opensslv.h > /bin/sh ${.CURDIR}/generate_pkgconfig.sh -c ${.CURDIR} -o ${.OBJDIR} > > -beforeinstall: ${PC_FILES} > +beforeinstall: > ${INSTALL} ${INSTALL_COPY} -o root -g ${SHAREGRP} \ > -m ${SHAREMODE} ${.OBJDIR}/${PC_FILES} ${DESTDIR}/usr/lib/pkgconfig/ > > Index: lib/libexpat/Makefile > === > RCS file: /cvs/src/lib/libexpat/Makefile,v > retrieving revision 1.10 > diff -u -p -r1.10 Makefile > --- lib/libexpat/Makefile 4 Sep 2016 09:54:25 - 1.10 > +++ lib/libexpat/Makefile 12 Sep 2016 18:20:08 - > @@ -17,10 +17,11 @@ includes: > ${INSTALL} ${INSTALL_COPY} -m 444 -o $(BINOWN) -g $(BINGRP) \ > ${.CURDIR}/lib/expat_external.h > ${DESTDIR}/usr/include/expat_external.h > > +all: ${PC_FILES} > ${PC_FILES}: lib/expat.h > /bin/sh ${.CURDIR}/generate_pkgconfig.sh -c ${.CURDIR} -o ${.OBJDIR} > > -beforeinstall: ${PC_FILES} > +beforeinstall: > ${INSTALL} ${INSTALL_COPY} -o root -g ${SHAREGRP} \ > -m ${SHAREMODE} ${.OBJDIR}/${PC_FILES} ${DESTDIR}/usr/lib/pkgconfig/ > > Index: lib/libfuse/Makefile > === > RCS file: /cvs/src/lib/libfuse/Makefile,v > retrieving revision 1.9 > diff -u -p -r1.9 Makefile > --- lib/libfuse/Makefile 4 Sep 2016 09:54:25 - 1.9 > +++ lib/libfuse/Makefile 12 Sep 2016 18:20:16 - > @@ -29,10 +29,11 @@ includes: > eval "$$j"; \ > done > > +all: ${PC_FILES} > ${PC_FILES}: fuse_private.h > /bin/sh ${.CURDIR}/generate_pkgconfig.sh -c ${.CURDIR} -o ${.OBJDIR} > > -beforeinstall: ${PC_FILES} > +beforeinstall: > ${INSTALL} ${INSTALL_COPY} -o root -g ${SHAREGRP} \ > -m ${SHAREMODE} ${.OBJDIR}/${PC_FILES} ${DESTDIR}/usr/lib/pkgconfig/ > > Index: lib/libssl/Makefile > === > RCS file: /cvs/src/lib/libssl/Makefile,v > retrieving revision 1.21 > diff -u -p -r1.21 Makefile > --- lib/libssl/Makefile 4 Sep 2016 09:54:25 - 1.21 > +++ lib/libssl/Makefile 12 Sep 2016 18:20:34 - > @@ -48,10 +48,11 @@ includes: > > .include > > +all: ${PC_FILES} > ${PC_FILES}: ${.CURDIR}/../libcrypto/opensslv.h > /bin/sh ${.CURDIR}/generate_pkgconfig.sh -c ${.CURDIR} -o ${.OBJDIR} > > -beforeinstall: ${PC_FILES} > +beforeinstall: > nm -o lib${LIB}.a | egrep -w 'printf|fprintf' && \ > (echo please fix stdio usage in this library; false) || true > .for p in ${PC_FILES} > Index: lib/libz/Makefile > === > RCS file: /cvs/src/lib/libz/Makefile,v > retrieving revision 1.19 > diff -u -p -r1.19 Makefile > --- lib/libz/Makefile 4 Sep 2016 09:54:25 - 1.19 > +++ lib/libz/Makefile 12 Sep 2016 18:20:44 - > @@ -19,10 +19,11 @@ includes: > eval "$$j"; \ > done > > +all: ${PC_FILES} > ${PC_FILES}: zlib.h > /bin/sh ${.CURDIR}/generate_pkgconfig.sh -c ${.CURDIR} -o ${.OBJDIR} > > -beforeinstall: ${PC_FILES} > +beforeinstall: > ${INSTALL} ${INSTALL_COPY} -o root -g ${SHAREGRP} \ > -m ${SHAREMODE} ${.OBJDIR}/${PC_FILES} ${DESTDIR}/usr/lib/pkgconfig/ > > -- jasper
Re: db_trace.c: use __func__ instead of hardcoding filename
On Fri, Sep 09, 2016 at 01:54:46PM -0700, Philip Guenther wrote: > On Fri, Sep 9, 2016 at 11:38 AM, Jasper Lievisse Adriaanse > wrote: > > Do we really want the filename to be printed in the message? If so we should > > use __FILE__. On the other hand, having the function name makes more sense > > to > > me. > > This is a "not found" message in response to an explicit user command: > why does the user care what *source file* is generating that message? I have no idea why the user would care about the source file. However the function triggering it might be of some more information, albeit of dubious added value. Perhaps the message should be normalized across the board following arm/sparc64? > arm and sparc64 do the Right Thing IMO: > if (p == NULL) { > (*pr)("not found\n"); > return; > } > > Philip Guenther -- jasper
db_trace.c: use __func__ instead of hardcoding filename
Hi, Do we really want the filename to be printed in the message? If so we should use __FILE__. On the other hand, having the function name makes more sense to me. OK? Index: amd64/amd64/db_trace.c === RCS file: /cvs/src/sys/arch/amd64/amd64/db_trace.c,v retrieving revision 1.20 diff -u -p -r1.20 db_trace.c --- amd64/amd64/db_trace.c 4 Sep 2016 09:22:28 - 1.20 +++ amd64/amd64/db_trace.c 9 Sep 2016 18:35:09 - @@ -174,7 +174,7 @@ db_stack_trace_print(db_expr_t addr, boo if (trace_proc) { struct proc *p = pfind((pid_t)addr); if (p == NULL) { - (*pr) ("db_trace.c: process not found\n"); + (*pr) ("%s: process not found\n", __func__); return; } frame = (struct callframe *)p->p_addr->u_pcb.pcb_rbp; Index: i386/i386/db_trace.c === RCS file: /cvs/src/sys/arch/i386/i386/db_trace.c,v retrieving revision 1.19 diff -u -p -r1.19 db_trace.c --- i386/i386/db_trace.c3 Mar 2016 12:44:09 - 1.19 +++ i386/i386/db_trace.c9 Sep 2016 18:35:09 - @@ -186,11 +186,11 @@ db_stack_trace_print(db_expr_t addr, boo frame = (struct callframe *)ddb_regs.tf_ebp; callpc = (db_addr_t)ddb_regs.tf_eip; } else if (trace_thread) { - (*pr) ("db_trace.c: can't trace thread\n"); + (*pr) ("%s: can't trace thread\n", __func__); } else if (trace_proc) { struct proc *p = pfind((pid_t)addr); if (p == NULL) { - (*pr) ("db_trace.c: process not found\n"); + (*pr) ("%s: process not found\n", __func__); return; } frame = (struct callframe *)p->p_addr->u_pcb.pcb_ebp; -- jasper
Re: add EdgeRouter Pro to www/octeon.html
On Fri, Mar 18, 2016 at 08:44:11AM +0100, Marcus MERIGHI wrote: > Hello, > > "The patch seems to work fine on an EdgeRouter Pro. > OK visa@" > (http://marc.info/?l=openbsd-tech&m=145822792814191) > > EdgeRouter Pro is not on octeon.html, put it there? > > Bye, Marcus Last time I checked the ethernet wasn't working either, so while we can boot on it, I'm not too sure if we should list it yet. > Index: octeon.html > === > RCS file: /cvs/www/octeon.html,v > retrieving revision 1.27 > diff -u -p -u -r1.27 octeon.html > --- octeon.html 13 Jan 2016 14:25:49 - 1.27 > +++ octeon.html 18 Mar 2016 07:39:28 - > @@ -70,7 +70,8 @@ Portwell CAM-0100 > http://www.ubnt.com/edgemax/edgerouter-lite/";>Ubiquiti Networks > EdgeRouter LITE > http://www.ubnt.com/edgemax/edgerouter-poe/";>Ubiquiti Networks > -EdgeRouter PoE > +http://www.ubnt.com/edgemax/edgerouter-pro/";>Ubiquiti Networks > +EdgeRouter Pro > > > > -- jasper
Re: libgtop2: Use getifaddrs(3) instead of KVM
On Sat, Dec 05, 2015 at 05:05:07PM +0100, Martin Pieuchot wrote: > Here's a rewrite of glibtop_get_netload_p(). I tested it with custom > code because I could not trigger this code path with our ports. > > This unbreaks devel/libgtop2 after the recent commit. > > I believe this should go upstream, how should I submit this? I can merge it directly upstream (with proper git authorship set). Note that our libgtop could use an update but as of yet I didn't get around to fixing the build breakage yet. When that's been done I'll merge your patch upstream, alright? > ok? OK with me. > Index: Makefile > === > RCS file: /cvs/ports/devel/libgtop2/Makefile,v > retrieving revision 1.130 > diff -u -p -r1.130 Makefile > --- Makefile 22 May 2015 11:31:13 - 1.130 > +++ Makefile 5 Dec 2015 15:58:01 - > @@ -6,7 +6,7 @@ GNOME_VERSION=2.30.0 > GNOME_PROJECT= libgtop > PKGNAME= libgtop2-${VERSION} > > -REVISION=3 > +REVISION=4 > > SHARED_LIBS= gtop-2.09.0 # .10.0 > > Index: patches/patch-sysdeps_openbsd_netload_c > === > RCS file: patches/patch-sysdeps_openbsd_netload_c > diff -N patches/patch-sysdeps_openbsd_netload_c > --- /dev/null 1 Jan 1970 00:00:00 - > +++ patches/patch-sysdeps_openbsd_netload_c 5 Dec 2015 15:59:31 - > @@ -0,0 +1,345 @@ > +$OpenBSD$ > + > +Rewrite of glibtop_get_netload_p() to use getifaddrs(3) instead of KVM. > + > +--- sysdeps/openbsd/netload.c.orig Mon Apr 28 23:09:24 2014 > sysdeps/openbsd/netload.cSat Dec 5 16:27:56 2015 > +@@ -1,48 +1,39 @@ > +-/* Copyright (C) 1998-99 Martin Baulig > +- This file is part of LibGTop 1.0. > ++/* > ++ * Copyright (c) 2015 Martin Pieuchot > ++ * > ++ * Permission to use, copy, modify, and distribute this software for any > ++ * purpose with or without fee is hereby granted, provided that the above > ++ * copyright notice and this permission notice appear in all copies. > ++ * > ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES > ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > ++ */ > + > +- Contributed by Martin Baulig , October 1998. > ++#include "config.h" > + > +- LibGTop is free software; you can redistribute it and/or modify it > +- under the terms of the GNU General Public License as published by > +- the Free Software Foundation; either version 2 of the License, > +- or (at your option) any later version. > ++#include > ++#include > ++#include > + > +- LibGTop is distributed in the hope that it will be useful, but WITHOUT > +- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > +- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > +- for more details. > +- > +- You should have received a copy of the GNU General Public License > +- along with LibGTop; see the file COPYING. If not, write to the > +- Free Software Foundation, Inc., 59 Temple Place - Suite 330, > +- Boston, MA 02111-1307, USA. > +-*/ > +- > +-#include > +-#include > +-#include > +-#include > +- > +-#include > +- > +-#include > +- > + #include > + #include > +-#include > + > +-#include > +- > +-#include > +- > + #include > +-#define _KERNEL > + #include > +-#undef _KERNEL > + #include > + > ++#include > ++ > ++#include "glibtop.h" > ++#include "glibtop/netload.h" > ++ > + static const unsigned long _glibtop_sysdeps_netload = > ++(1L << GLIBTOP_NETLOAD_MTU) + > + (1L << GLIBTOP_NETLOAD_IF_FLAGS) + > + (1L << GLIBTOP_NETLOAD_PACKETS_IN) + > + (1L << GLIBTOP_NETLOAD_PACKETS_OUT) + > +@@ -55,183 +46,115 @@ static const unsigned long _glibtop_sysdeps_netload = > + (1L << GLIBTOP_NETLOAD_ERRORS_TOTAL) + > + (1L << GLIBTOP_NETLOAD_COLLISIONS); > + > +-static const unsigned _glibtop_sysdeps_netload_data = > +-(1L << GLIBTOP_NETLOAD_ADDRESS) + > +-(1L << GLIBTOP_NETLOAD_SUBNET) + > +-(1L << GLIBTOP_NETLOAD_MTU); > +- > +-/* nlist structure for kernel access */ > +-static struct nlist nlst [] = { > +-{ "_ifnet" }, > +-{ 0 } > +-}; > +- > +-/* Init function. */ > +- > + void > + _glibtop_init_netload_p (glibtop *server) > + { > + server->sysdeps.netload = _glibtop_sysdeps_netload; > +- > +-if (kvm_nlist (server->machine.kd, nlst) < 0) > +-glibtop_error_io_r (server, "kvm_nlist"); > + } > + > +-/* Provides Network statistics. */ > +- > + void > + glibtop_get_netload_p (glibtop *server, glibtop_netload *buf
Re: WAPBL implementation
On Wed, Oct 28, 2015 at 09:06:54AM -0200, Walter Neto wrote: > Adding WAPBL support for dumpfs(8) > > next diffs: > - tunefs(8) showing log information and setting log size > - fsck_ffs(8) WAPBL support > > ok jasper@ Correction: I only pointed out that we should have the option to somehow get information about the log. I did not OK this or the original WAPBL diff. -- jasper
Re: [PATCH] pkg-config compare() fails for libevent (at least)
On Tue, Aug 11, 2015 at 01:20:24PM -0500, attila wrote: > Hello tech@, > > On the 6 Aug snap I ran into this issue: > > $ pkg_info | grep libevent > libevent-2.0.22 event notification library > $ pkg-config --atleast-version=2.0.1 libevent && echo yes > Argument "22-stabl" isn't numeric in numeric eq (==) at /usr/bin/pkg-config > line 662. > yes > > So it works but spits out that error. The issue is that the libevent > port reports its version as 2.0.22-stable, which does not follow the > convention used by the compare() sub in pkg-config. The attached > patch gets rid of the error albeit in a very pointilistic way; perhaps > a more general solution is desired, but I'm not sure what the best > approach is, especially given that there is something called > pkg-config available pretty much everywhere but based on very > different implementations... > > It doesn't appear as though my patch introduces any regressions, > although I'm still sussing out how the regression tests work so I'm > not sure if I'm doing anything wrong... it appears that five of > pkg-config's regression tests fail regardless of my patch: > > FAIL usr.bin/pkg-config/static-cflags2 > FAIL usr.bin/pkg-config/static-libs2 > FAIL usr.bin/pkg-config/static-libs3 > FAIL usr.bin/pkg-config/static-libs4 > FAIL usr.bin/pkg-config/missing-req-2 > > In all cases it looks like the difference is ordering, except for the > last where two errors are produced but only one is expected. I'll > work on a patch to fix these failures next. That's indeed the case and patches to fix that are welcome. > Feedback, comments most welcome. Could you please add regress tests for this issue you're solving too? > Pax, -A > -- > http://trac.haqistan.net | att...@stalphonsos.com | 0xE6CC1EDB > > Index: pkg-config > === > RCS file: /cvs/src/usr.bin/pkg-config/pkg-config,v > retrieving revision 1.85 > diff -u -p -r1.85 pkg-config > --- pkg-config17 Nov 2014 22:16:23 - 1.85 > +++ pkg-config11 Aug 2015 17:53:24 - > @@ -625,16 +625,16 @@ sub compare > # is there a valid non-numeric suffix to deal with later? > # accepted are (in order): a(lpha) < b(eta) < rc < ' '. > # suffix[0] is the 'alpha' part, suffix[1] is the '1' part in 'alpha1'. > - if ($a =~ s/(rc|beta|b|alpha|a)(\d+)$//) { > - say_debug("valid suffix $1$2 found in $a$1$2."); > - $suffix_a[0] = $1; > - $suffix_a[1] = $2; > + if ($a =~ s/(|-)(stable|rc|beta|b|alpha|a)(|\d+)$//) { > + say_debug("valid suffix $2$3 found in $a$2$3."); > + $suffix_a[0] = $2; > + $suffix_a[1] = $3; > } > > - if ($b =~ s/(rc|beta|b|alpha|a)(\d+)$//) { > - say_debug("valid suffix $1$2 found in $b$1$2."); > - $suffix_b[0] = $1; > - $suffix_b[1] = $2; > + if ($b =~ s/(|-)(stable|rc|beta|b|alpha|a)(|\d+)$//) { > + say_debug("valid suffix $2$3 found in $b$2$3."); > + $suffix_b[0] = $2; > + $suffix_b[1] = $3; > } > > # The above are standard suffixes; deal with single alphabetical -- jasper
sed -i
Hi, Here's a diff to add the '-i' flag to sed to do inplace edits. It's mostly from FreeBSD with some adjustments to prevent a race with unlink() and fopen() during the tempfile creation. It's been tested in a full ports bulk (thanks aja), and went through a build of base and xenocara. Regress tests will also be added for this. This diff is already OK millert@. Any more OKs? Index: defs.h === RCS file: /cvs/src/usr.bin/sed/defs.h,v retrieving revision 1.5 diff -u -p -r1.5 defs.h --- defs.h 19 Jan 2015 15:30:52 - 1.5 +++ defs.h 16 Jul 2015 18:45:58 - @@ -128,6 +128,7 @@ typedef struct { char *space;/* Current space pointer. */ size_t len; /* Current length. */ int deleted;/* If deleted. */ + int append_newline; /* If originally terminated by \n. */ char *back; /* Backing memory. */ size_t blen;/* Backing memory length. */ } SPACE; Index: extern.h === RCS file: /cvs/src/usr.bin/sed/extern.h,v retrieving revision 1.9 diff -u -p -r1.9 extern.h --- extern.h13 Apr 2015 05:11:23 - 1.9 +++ extern.h16 Jul 2015 00:23:57 - @@ -40,17 +40,19 @@ extern regmatch_t *match; extern size_t maxnsub; extern u_long linenum; extern size_t appendnum; -extern int lastline; extern int Eflag, aflag, eflag, nflag; -extern char *fname; +extern const char *fname, *outfname; +extern FILE *infile, *outfile; voidcfclose(struct s_command *, struct s_command *); voidcompile(void); -voidcspace(SPACE *, char *, size_t, enum e_spflag); +voidcspace(SPACE *, const char *, size_t, enum e_spflag); char *cu_fgets(char **, size_t *); voiderr(int, const char *, ...); int mf_fgets(SPACE *, enum e_spflag); +int lastline(void); voidprocess(void); +voidresetranges(void); char *strregerror(int, regex_t *); void *xmalloc(size_t); void *xreallocarray(void *, size_t, size_t); Index: main.c === RCS file: /cvs/src/usr.bin/sed/main.c,v retrieving revision 1.18 diff -u -p -r1.18 main.c --- main.c 26 Nov 2014 18:34:51 - 1.18 +++ main.c 16 Jul 2015 19:21:16 - @@ -34,6 +34,7 @@ */ #include +#include #include #include @@ -45,6 +46,7 @@ #include #include #include +#include #include "defs.h" #include "extern.h" @@ -78,15 +80,23 @@ struct s_flist { */ static struct s_flist *files, **fl_nextp = &files; +FILE *infile; /* Current input file */ +FILE *outfile; /* Current output file */ + int Eflag, aflag, eflag, nflag; +static int rval; /* Exit status */ /* * Current file and line number; line numbers restart across compilation - * units, but span across input files. + * units, but span across input files. The latter is optional if editing + * in place. */ -char *fname; /* File name. */ +const char *fname; /* File name. */ +const char *outfname; /* Output file name */ +static char oldfname[PATH_MAX];/* Old file name (for in-place editing) */ +static char tmpfname[PATH_MAX];/* Temporary file name (for in-place editing) */ +char *inplace; /* Inplace edit file extension */ u_long linenum; -int lastline; /* TRUE on the last line of the last file */ static void add_compunit(enum e_cut, char *); static void add_file(char *); @@ -97,7 +107,8 @@ main(int argc, char *argv[]) int c, fflag; fflag = 0; - while ((c = getopt(argc, argv, "Eae:f:nru")) != -1) + inplace = NULL; + while ((c = getopt(argc, argv, "Eae:f:i::nru")) != -1) switch (c) { case 'E': case 'r': @@ -114,6 +125,9 @@ main(int argc, char *argv[]) fflag = 1; add_compunit(CU_FILE, optarg); break; + case 'i': + inplace = optarg ? optarg : ""; + break; case 'n': nflag = 1; break; @@ -123,8 +137,8 @@ main(int argc, char *argv[]) default: case '?': (void)fprintf(stderr, - "usage: sed [-aEnru] command [file ...]\n" - " sed [-aEnru] [-e command] [-f command_file] [file ...]\n"); + "usage: sed [-aEnru] [-i [extension]] command [file ...]\n" + " sed [-aEnru] [-i [extension]] [-e command] [-f command_file] [file ...]\n"); exit(1); } argc -= optind; @@ -148,7 +162,7 @@ main(int argc, char *argv[]) cfclose(prog, NULL); if (fclose(stdo
Re: Do you need/prefer the non-DUID option in the installer?
On Sun, Mar 15, 2015 at 11:24:32AM -0400, Kenneth Westerback wrote: > Using DUIDs in the installed /etc/fstab has been the default for some time > now. > > We'd like to eliminate the question in the installer and just use > DUIDs unconditionally. > > But first we need to know you are aware of any circumstances where > people need or prefer to use the non-DUID option when installing? > > Ken I think there were issues on Octeon when using DUIDs by default. Did anyone else run into this too? -- jasper
Re: syslogd sending via tcp
On Sun, Dec 28, 2014 at 05:33:08PM +0100, Alexander Bluhm wrote: > Jasper tested and found that it only worked on loopback. I have > forgotten to check for EINPROGRESS after connect. So here is a new > diff. > > bluhm Succesfully tested now with a remote logstash host. > Index: privsep.c > === > RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/privsep.c,v > retrieving revision 1.48 > diff -u -p -r1.48 privsep.c > --- privsep.c 5 Oct 2014 18:14:01 - 1.48 > +++ privsep.c 28 Dec 2014 15:48:51 - > @@ -317,17 +317,34 @@ priv_init(char *conf, int numeric, int l > servname[servname_len - 1] = '\0'; > > memset(&hints, 0, sizeof(hints)); > - if (strcmp(protoname, "udp") == 0) { > + switch (strlen(protoname)) { > + case 3: > hints.ai_family = AF_UNSPEC; > - } else if (strcmp(protoname, "udp4") == 0) { > - hints.ai_family = AF_INET; > - } else if (strcmp(protoname, "udp6") == 0) { > - hints.ai_family = AF_INET6; > + break; > + case 4: > + switch (protoname[3]) { > + case '4': > + hints.ai_family = AF_INET; > + break; > + case '6': > + hints.ai_family = AF_INET6; > + break; > + default: > + errx(1, "bad ip version %s", protoname); > + } > + break; > + default: > + errx(1, "bad protocol length %s", protoname); > + } > + if (strncmp(protoname, "udp", 3) == 0) { > + hints.ai_socktype = SOCK_DGRAM; > + hints.ai_protocol = IPPROTO_UDP; > + } else if (strncmp(protoname, "tcp", 3) == 0) { > + hints.ai_socktype = SOCK_STREAM; > + hints.ai_protocol = IPPROTO_TCP; > } else { > errx(1, "unknown protocol %s", protoname); > } > - hints.ai_socktype = SOCK_DGRAM; > - hints.ai_protocol = IPPROTO_UDP; > i = getaddrinfo(hostname, servname, &hints, &res0); > if (i != 0 || res0 == NULL) { > addr_len = 0; > Index: syslogd.c > === > RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/syslogd/syslogd.c,v > retrieving revision 1.136 > diff -u -p -r1.136 syslogd.c > --- syslogd.c 10 Dec 2014 19:42:14 - 1.136 > +++ syslogd.c 28 Dec 2014 16:25:55 - > @@ -50,13 +50,14 @@ > * extensive changes by Ralph Campbell > * more extensive changes by Eric Allman (again) > * memory buffer logging by Damien Miller > - * IPv6, libevent by Alexander Bluhm > + * IPv6, libevent, sending via TCP by Alexander Bluhm > */ > > #define MAXLINE 1024/* maximum line length */ > #define MIN_MEMBUF (MAXLINE * 4) /* Minimum memory buffer size */ > #define MAX_MEMBUF (256 * 1024)/* Maximum memory buffer size */ > #define MAX_MEMBUF_NAME 64 /* Max length of membuf log > name */ > +#define MAX_TCPBUF (256 * 1024)/* Maximum tcp event buffer size */ > #define MAXSVLINE 120 /* maximum saved line length */ > #define DEFUPRI (LOG_USER|LOG_NOTICE) > #define DEFSPRI (LOG_KERN|LOG_CRIT) > @@ -132,6 +133,8 @@ struct filed { > charf_loghost[1+4+3+1+MAXHOSTNAMELEN+1+NI_MAXSERV]; > /* @proto46://[hostname]:servname\0 */ > struct sockaddr_storage f_addr; > + struct bufferevent *f_bufev; > + int f_fd; > } f_forw; /* forwarding address */ > charf_fname[MAXPATHLEN]; > struct { > @@ -170,16 +173,17 @@ int repeatinterval[] = { 30, 120, 600 }; > #define F_FILE 1 /* regular file */ > #define F_TTY2 /* terminal */ > #define F_CONSOLE3 /* console terminal */ > -#define F_FORW 4 /* remote machine */ > +#define F_FORWUDP4 /* remote machine via UDP */ > #define F_USERS 5 /* list of users */ > #define F_WALL 6 /* everyone logged on */ >
Re: Typo in Tetris
On Sun, Aug 03, 2014 at 02:27:37PM +0100, Sam Hart wrote: > Absolutely trivial, but none the less ... It's not a typo if and only if iff was meant. > --- tetris-orig/shapes.c 2014-08-03 14:12:09.0 +0100 > +++ tetris/shapes.c 2014-08-03 14:12:26.0 +0100 > @@ -76,7 +76,7 @@ > }; > > /* > - * Return true iff the given shape fits in the given position, > + * Return true if the given shape fits in the given position, > * taking the current board into account. > */ > int
Re: got me a 16-core octeon donated.
On Thu, May 15, 2014 at 11:03:10PM +0200, Mark Kettenis wrote: > > Date: Thu, 15 May 2014 22:04:16 +0200 > > From: Janne Johansson > > > > After some insight from jasper, I stripped away the randomdata section and > > voila: > > > > Copyright (c) 1982, 1986, 1989, 1991, 1993 > > The Regents of the University of California. All rights reserved. > > Copyright (c) 1995-2014 OpenBSD. All rights reserved. > > http://www.OpenBSD.org > > > > OpenBSD 5.5 (RAMDISK) #0: Fri Mar 14 12:10:56 CET 2014 > > r...@octeon.office.jasper.la:/usr/src/sys/arch/octeon/compile/RAMDISK > > real mem = 4002201600 (3816MB) > > avail mem = 3970760704 (3786MB) > > warning: no entropy supplied by boot loader > > mainbus0 at root > > cpu0 at mainbus0: Unknown CPU type (0x0) rev 0.3 500 MHz, Software FP > > emulation > > cpu0: cache L1-I 32KB D 16KB 4 way, L2 128KB direct > > clock0 at mainbus0: int 5 > > iobus0 at mainbus0 > > octcf at iobus0 base 0x1d000800 irq 0 not configured > > pcibus0 at iobus0 irq 0 > > pci0 at pcibus0 bus 0 > > 0:0:0: mem address conflict 0xf800/0x800 > > 0:2:0: bridge mem address conflict 0x1000/0x10 > > vendor "Cavium", unknown product 0x0005 (class processor subclass MIPS, rev > > 0x03) at pci0 dev 0 function 0 not configured > > "Pericom PI7C21P100 PCIX-PCIX" rev 0x01 at pci0 dev 2 function 0 not > > configured > > Looks like ppb(4) is missing from the kernel config. It is, I've got a diff to add it along with some devices when I get a chance to test them on my board.
unbreak ftp progressbar
Hi, At least with ftp -Vm the progressbar was messing up the display as it was printing the output on the same line and would wrap around creating displays such as http://pbot.rmdir.de/gOeAYNv30HnQk-4I4xmKZg Seems like typo from the introduction of the -D flag. OK? Index: util.c === RCS file: /cvs/src/usr.bin/ftp/util.c,v retrieving revision 1.65 diff -u -p -r1.65 util.c --- util.c 23 Jan 2014 00:39:15 - 1.65 +++ util.c 29 Jan 2014 13:52:07 - @@ -825,7 +825,7 @@ progressmeter(int flag, const char *file overhead += 3; } snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), - "%-*.*s%s %3d%% ", l, l, title, + "\r%-*.*s%s %3d%% ", l, l, title, dotdot, ratio); overhead += l + 1; } else
Re: Allwinner
On Fri, Oct 11, 2013 at 11:46:39PM +0300, Artturi Alm wrote: > On 10/11/13 20:39, Markus Hennecke wrote: > >On Sat, 5 Oct 2013, Artturi Alm wrote: > > > >>Current version attached, extract to /sys/arch/armv7 and read the short > >>notes file, no more out of allwinner/ patches needed thanks to armv7. > >> > >>A20 support still needs a workaround under /sys/arch/arm/cortex/ which > >>i didn't include as i think support is still 'subtly' broken anyway.. > >>And ahci is still not working for me, but there's a couple of > >>new drivers included. > >>Ethernet driver survived make build of userland with /usr/src mounted > >>via nfs, fwiw. > >> > >>Now this is totally usable for me as-is already, so any feedback is > >>welcome, be it finding out possible bugs and/or confirming it's working. > > > >Great work! I made a few changes to fix the timer code for the A20 CPU, > >the diff to your code is attached. With this I am almost booting the > >kernel on a cubieboard 2: > > > >Copyright (c) 1982, 1986, 1989, 1991, 1993 > > The Regents of the University of California. All rights reserved. > >Copyright (c) 1995-2013 OpenBSD. All rights reserved. http://www.OpenBSD.org > > > >OpenBSD 5.4-current (GENERIC-ALLWINNER) #22: Fri Oct 11 19:17:11 CEST 2013 > > > > mar...@antigone.markus-hennecke.de:/usr/src/sys/arch/armv7/compile/GENERIC-ALLWINNER > >real mem = 1073741824 (1024MB) > >avail mem = 1040007168 (991MB) > >mainbus0 at root > >cortex0 at mainbus0 > >ampintc0 at cortex0 nirq 160 > >cpu0 at mainbus0: ARM Cortex A7 rev 4 (ARMv7 core) > >cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled > >cpu0: 32KB(32b/l,2way) I-cache, 32KB(64b/l,4way) wr-back D-cache > >allwinner0 at mainbus0: A20 > >awpio0 at allwinner0 > >awccmu0 at allwinner0 > >awtimer0 at allwinner0: tick rate 32KHz hz 100 stat rate 32KHz stathz 128 > > counter 24000 KHz > >awdog0 at allwinner0 > >awrtc0 at allwinner0 > >awuart0 at allwinner0: console > >awe0 at allwinner0 > >awe0: address 00:00:00:00:00:00 > >rlphy0 at awe0 phy 1: RTL8201L 10/100 PHY, rev. 1 > >ahci0 at allwinner0 GHC 0x8000 AHCI 1.1 > >ahci0: capabilities > >0x6726ff80, 1 ports, 32 > >cmds, gen 1 (1.5Gbps) and 2 (3Gbps) > >ahci0: ports implemented: 0x0001 > >ahci0.0: port reset > >ahci0: no device detected on port 0 > >scsibus0 at ahci0: 32 targets > >ehci0 at allwinner0 > >usb0 at ehci0: USB revision 2.0 > >uhub0 at usb0 "Allwinner EHCI root hub" rev 2.00/1.00 addr 1 > >ehci1 at allwinner0 > >usb1 at ehci1: USB revision 2.0 > >uhub1 at usb1 "Allwinner EHCI root hub" rev 2.00/1.00 addr 1 > >gpio0 at awpio0: 18 pins > >gpio1 at awpio0: 24 pins > >gpio2 at awpio0: 25 pins > >gpio3 at awpio0: 28 pins > >gpio4 at awpio0: 12 pins > >gpio5 at awpio0: 6 pins > >gpio6 at awpio0: 12 pins > >gpio7 at awpio0: 28 pins > >gpio8 at awpio0: 22 pins > >/dev/ksyms: Symbol table not valid. > > > >Here the output stops, I will look into that later. At this point I am > >unable to figure out how to set the ethaddr in the u-boot version I am > >using. setenv ethaddr xx:xx:xx:xx:xx:xx doesn't seem to have any effect. > > > >Kind regards > >Markus > > > > Hi, > > Thanks for the patch, it looks correct when compared to the user manual > and shows how ugly sources may get when not paid enough attention, > will fix the whitespaces there also. Note that Cortex-A7 should > support agtimer found in arch/arm/cortex, which would allow cleaning > up awtimer.c from the 'added on'-kind of hacks to support A20, > priorities have kept me from trying that one out so far. > > To allow it to boot further you would have to change ICP_ADDR and > ICD_ADDR in ampintc, iirc. possibly 0x1000 and 0x2000 respectively, > which is not the fix that would ever get commited even if allwinner > would be on cvs, as it'll break Cortex-A9, and unfortunately, masking > by cpu is not working option either, there is example of where it would > fail already (exynos). > FDT is the only clean solution i can think of, when there is priority on > keeping arch/arm/cortex free of SoC-dependent code. > > About ethaddr, have you tried pinging another host from u-boot? > Does your u-boot support emac? the one i initially downloaded for > cubieboard2 did not iirc., if you can boot the bsd.umg over network, > and still get 00:00:00:00:00:00, i will power up my cb2 to fix awe, > as it's so far untested on A20 afaik. > > > -Artturi I'm going to commit the initial allwinner diff along with Martin's diff tomorrow unless strong objection is raised. This needs to be worked on intree instead of letting it rot on the mailinglist. -- Cheers, Jasper "Stay Hungry. Stay Foolish"
Re: octeon cnmac phy addresses
On Sat, Sep 14, 2013 at 08:34:42PM +1000, Jonathan Matthew wrote: > The network interfaces on the ubiquiti edgerouter lite don't work yet. > Here's the first step towards fixing that: > > Mapping port numbers to phy addresses in the mii read/write functions > hides the phy addresses unnecessarily. Instead, we should figure out > the phy address when setting up the port and pass it to mii_attach. > > I don't have an octeon system that works with the existing code, so all > I can say is this doesn't make any difference on the edgerouter lite. > It uses different phy addresses, which I'll add a mapping for later. > > ok? Reads good to me, and given the fact it doesn't break the cam-0100; Ok with me. > Index: arch/octeon/dev/cn30xxgmx.c > === > RCS file: /cvs/src/sys/arch/octeon/dev/cn30xxgmx.c,v > retrieving revision 1.5 > diff -u -p -r1.5 cn30xxgmx.c > --- arch/octeon/dev/cn30xxgmx.c 5 Dec 2012 23:20:14 - 1.5 > +++ arch/octeon/dev/cn30xxgmx.c 14 Sep 2013 09:35:40 - > @@ -146,6 +146,11 @@ struct cn30xxgmx_port_ops *cn30xxgmx_por > [GMX_SPI42_PORT] = &cn30xxgmx_port_ops_spi42 > }; > > +/* this apparently works for the portwell cam-0100 */ > +int octeon_eth_phy_table[] = { > + 0x02, 0x03, 0x22 > +}; > + > #ifdef OCTEON_ETH_DEBUG > static void *cn30xxgmx_intr_drop_ih; > struct evcnt cn30xxgmx_intr_drop_evcnt = > @@ -178,6 +183,14 @@ cn30xxgmx_match(struct device *parent, v > return 1; > } > > +static int > +cn30xxgmx_port_phy_addr(int port) > +{ > + if (port >= nitems(octeon_eth_phy_table)) > + return -1; > + return octeon_eth_phy_table[port]; > +} > + > static void > cn30xxgmx_attach(struct device *parent, struct device *self, void *aux) > { > @@ -223,6 +236,9 @@ cn30xxgmx_attach(struct device *parent, > gmx_aa.ga_port_type = sc->sc_port_types[i]; > gmx_aa.ga_gmx = sc; > gmx_aa.ga_gmx_port = port_sc; > + gmx_aa.ga_phy_addr = cn30xxgmx_port_phy_addr(i); > + if (gmx_aa.ga_phy_addr == -1) > + panic(": don't know phy address for port %d", i); > > config_found_sm(self, &gmx_aa, > cn30xxgmx_print, cn30xxgmx_submatch); > Index: arch/octeon/dev/cn30xxgmxvar.h > === > RCS file: /cvs/src/sys/arch/octeon/dev/cn30xxgmxvar.h,v > retrieving revision 1.1 > diff -u -p -r1.1 cn30xxgmxvar.h > --- arch/octeon/dev/cn30xxgmxvar.h16 Jun 2011 11:22:30 - 1.1 > +++ arch/octeon/dev/cn30xxgmxvar.h14 Sep 2013 09:35:40 - > @@ -136,6 +136,7 @@ struct cn30xxgmx_attach_args { > const char *ga_name; > int ga_portno; > int ga_port_type; > + int ga_phy_addr; > > struct cn30xxgmx_softc *ga_gmx; > struct cn30xxgmx_port_softc > Index: arch/octeon/dev/if_cnmac.c > === > RCS file: /cvs/src/sys/arch/octeon/dev/if_cnmac.c,v > retrieving revision 1.11 > diff -u -p -r1.11 if_cnmac.c > --- arch/octeon/dev/if_cnmac.c17 Aug 2013 10:00:09 - 1.11 > +++ arch/octeon/dev/if_cnmac.c14 Sep 2013 09:35:40 - > @@ -259,15 +259,6 @@ static const struct octeon_evcnt_entry o > }; > #endif > > -/* XXX board-specific */ > -static const int octeon_eth_phy_table[] = { > -#if defined __seil5__ > - 0x04, 0x01, 0x02 > -#else > - 0x02, 0x03, 0x22 > -#endif > -}; > - > /* buffer management */ > > static const struct octeon_eth_pool_param { > @@ -338,6 +329,7 @@ octeon_eth_attach(struct device *parent, > sc->sc_port_type = ga->ga_port_type; > sc->sc_gmx = ga->ga_gmx; > sc->sc_gmx_port = ga->ga_gmx_port; > + sc->sc_phy_addr = ga->ga_phy_addr; > > sc->sc_init_flag = 0; > > @@ -549,30 +541,14 @@ static int > octeon_eth_mii_readreg(struct device *self, int phy_no, int reg) > { > struct octeon_eth_softc *sc = (struct octeon_eth_softc *)self; > - int phy_addr = octeon_eth_phy_table[phy_no]; > - > - if (sc->sc_port >= (int)nitems(octeon_eth_phy_table) || > - phy_no != sc->sc_port) { > - log(LOG_ERR, > - "mii read address mismatch, phy number %d.\n", phy_no); > - return -1; > - } > - return cn30xxsmi_read(sc->sc_smi, phy_addr, reg); > + return cn30xxsmi_read(sc->sc_smi, phy_no, reg); > } > > static void > octeon_eth_mii_writereg(struct device *self, int phy_no, int reg, int value) > { > struct octeon_eth_softc *sc = (struct octeon_eth_softc *)self; > - int phy_addr = octeon_eth_phy_table[phy_no]; > - > - if (sc->sc_port >= (int)nitems(octeon_eth_phy_table) || > - phy_no != sc->sc_port) { > - log(LOG_ERR, > - "mii write address mismatch, phy numb
Re: arch/: unitialized vars
On Fri, Jun 28, 2013 at 09:11:13AM +0200, Janne Johansson wrote: > Now the hard part is to figure out exactly where it should have been > initialized and to what. Just setting it to 0 somewhere is not necessarily > better. It seems the mips64/mips64/cache_tfp.c one is a proper bug. Looking at the caching routines for the r10k, I'd propose this (untested): Index: cache_tfp.c === RCS file: /cvs/src/sys/arch/mips64/mips64/cache_tfp.c,v retrieving revision 1.1 diff -p -u -r1.1 cache_tfp.c --- cache_tfp.c 29 Sep 2012 21:37:03 - 1.1 +++ cache_tfp.c 28 Jun 2013 07:16:38 - @@ -106,6 +106,7 @@ tfp_SyncCache(struct cpu_info *ci) sr = disableintr(); va = ci->ci_l1datacachesize; + eva = va + ci->ci_l1instcacheset; for (va = 0; va < eva; va += TFP_DCTW_STEP) tfp_dctw_zero(va); setsr(sr); But I reckon Miod would be able to a conclusive answer here. > 2013/6/28 Maxime Villard > > > Hi, > > some other uninitialized vars found by my scanner in arch/. > > > > == hp300/dev/hd.c > > At l.544, 'error' is not initialized. > > == luna88k/luna88k/autoconf.c > > At l.132, 'c' may be uninitialized. > > == mips64/mips64/cache_tfp.c > > At l.109, 'eva' is not initialized. > > == sparc/dev/zs.c > > At l.513, 'tmp' may be uninitialized. > > == sparc64/dev/vdsp.c > > At l.384, 'err' may be uninitialized. This variable should > > be the return value of hv_ldc_tx_get_state(), see l.417. > > == zaurus/dev/vdsp.c > > At l.897, 'parity' is not initialized. > > > > > > > -- > May the most significant bit of your life be positive. -- Cheers, Jasper "Stay Hungry. Stay Foolish"
Re: mg(1): shell-command
On Wed, May 22, 2013 at 07:42:42AM +, Mark Lumsden wrote: > To make the shell-command-on-region and this command behave > like that requires another diff. > > mark I'm fine with this diff going in first and polishing it intree, it works fine for commands with > 1 line of output. > On Wed, May 22, 2013 at 09:32:45AM +0200, Jasper Lievisse Adriaanse wrote: > > On Tue, May 21, 2013 at 07:54:31PM +, Mark Lumsden wrote: > > > This diff modifies the shell-command-on-region function and gives us > > > shell-command. It makes getting output from other commands into mg > > > really easy. Comments/oks? > > > > > > -lum > > > > It seems Emacs doesn't split the window if the output from the command is > > only > > a single line (like 'date'), which is behaviour I quite like if you want to > > check something small. > > > > > Index: def.h > > > === > > > RCS file: /cvs/src/usr.bin/mg/def.h,v > > > retrieving revision 1.135 > > > diff -u -p -r1.135 def.h > > > --- def.h 25 Mar 2013 11:41:44 - 1.135 > > > +++ def.h 21 May 2013 19:46:38 - > > > @@ -592,6 +592,7 @@ intregion_get_data(struct region *, c > > > void region_put_data(const char *, int); > > > int markbuffer(int, int); > > > int piperegion(int, int); > > > +int shellcommand(int, int); > > > int pipeio(const char * const, char * const[], char * > > > const, int, > > >struct buffer *); > > > > > > Index: funmap.c > > > === > > > RCS file: /cvs/src/usr.bin/mg/funmap.c,v > > > retrieving revision 1.45 > > > diff -u -p -r1.45 funmap.c > > > --- funmap.c 27 Dec 2012 18:51:52 - 1.45 > > > +++ funmap.c 21 May 2013 19:46:38 - > > > @@ -179,6 +179,7 @@ static struct funmap functnames[] = { > > > {setfillcol, "set-fill-column",}, > > > {setmark, "set-mark-command",}, > > > {setprefix, "set-prefix-string",}, > > > + {shellcommand, "shell-command",}, > > > {piperegion, "shell-command-on-region",}, > > > {shrinkwind, "shrink-window",}, > > > #ifdef NOTAB > > > Index: keymap.c > > > === > > > RCS file: /cvs/src/usr.bin/mg/keymap.c,v > > > retrieving revision 1.50 > > > diff -u -p -r1.50 keymap.c > > > --- keymap.c 7 Jun 2012 15:15:04 - 1.50 > > > +++ keymap.c 21 May 2013 19:46:38 - > > > @@ -217,8 +217,9 @@ static PF metacV[] = { > > > pagenext/* ^V */ > > > }; > > > > > > -static PF metasp[] = { > > > - justone /* space */ > > > +static PF metaspex[] = { > > > + justone,/* space */ > > > + shellcommand/* ! */ > > > }; > > > > > > static PF metapct[] = { > > > @@ -317,7 +318,7 @@ struct KEYMAPE (8 + IMAPEXT) metamap = { > > > CCHR('V'), CCHR('V'), metacV, NULL > > > }, > > > { > > > - ' ', ' ', metasp, NULL > > > + ' ', '!', metaspex, NULL > > > }, > > > { > > > '%', '%', metapct, NULL > > > Index: mg.1 > > > === > > > RCS file: /cvs/src/usr.bin/mg/mg.1,v > > > retrieving revision 1.75 > > > diff -u -p -r1.75 mg.1 > > > --- mg.1 28 Dec 2012 16:12:50 - 1.75 > > > +++ mg.1 21 May 2013 19:46:38 - > > > @@ -268,6 +268,8 @@ suspend-emacs > > > scroll-other-window > > > .It M-SPC > > > just-one-space > > > +.It M-! > > > +shell-command > > > .It M-. > > > find-tag > > > .It M-* > > > @@ -835,6 +837,8 @@ Used by auto-fill-mode. > > > Sets the mark in the current window to the current dot location. > > > .It set-prefix-string > > > Sets the prefix string to be used by the 'prefix-region' command. > > > +.It shell-command > > > +Execute external command from m
Re: mg(1): shell-command
u M-| is not supported yet */ > @@ -436,6 +436,51 @@ piperegion(int f, int n) > return (FALSE); > } > > + region_get_data(®ion, text, len); > + > + return shellcmdoutput(argv, text, len); > +} > + > +/* > + * Get command from mini-buffer and execute externally. > + */ > +/*ARGSUSED */ > +int > +shellcommand(int f, int n) > +{ > + > + int len; > + char *cmd, cmdbuf[NFILEN], *text; > + char *argv[] = {"sh", "-c", (char *) NULL, (char *) NULL}; > + > + if (n > 1) > + return (ABORT); > + > + if ((cmd = eread("Shell command: ", cmdbuf, sizeof(cmdbuf), > + EFNEW | EFCR)) == NULL || (cmd[0] == '\0')) > + return (ABORT); > + > + argv[2] = cmd; > + > + len = strlen(cmd); > + > + if ((text = malloc(len + 1)) == NULL) { > + ewprintf("Cannot allocate memory."); > + return (FALSE); > + } > + > + return shellcmdoutput(argv, NULL, 0); > +} > + > + > +int > +shellcmdoutput(char* const argv[], char* const text, int len) > +{ > + > + struct buffer *bp; > + char*shellp; > + int ret; > + > bp = bfind("*Shell Command Output*", TRUE); > bp->b_flag |= BFREADONLY; > if (bclear(bp) != TRUE) { > @@ -443,7 +488,6 @@ piperegion(int f, int n) > return (FALSE); > } > > - region_get_data(®ion, text, len); > shellp = getenv("SHELL"); > > ret = pipeio(shellp, argv, text, len, bp); > -- Regards, Jasper Lievisse Adriaanse, Engineering team M:tier
Re: drm@macppc, please test
On Fri, Dec 07, 2012 at 05:28:42AM +0100, J??r??mie Courr??ges-Anglas wrote: > Hi, > > this is seems to work as expected, known issues included. > glxgears runs OK but displays some artifacts, and the console is full of > garbage after exiting X. > > I've put the dmesg, Xorg.0.log, etc here: > > http://autogeree.net/~jca/tmp/g4-drm/ > > Thanks a lot, it's quite nice to have DRI. :) > > -- > J??r??mie Courr??ges-Anglas > GPG Key fingerprint: 61DB D9A0 00A4 67CF 2A90 8961 6191 8FBF 06A1 1494 Nice, I now get > 750 FPS on my iBook g4: memc0 at mainbus0: uni-n rev 0xd2 vgafb0 at pci0 dev 16 function 0 "ATI Radeon Mobility 9550" rev 0x80, mmio GL_RENDERER = Mesa DRI R300 (RV350 4E56) AGP 4x TCL Though I'm observing the same artifcats as Jeremie is getting. Still, great work Martin! -- Cheers, Jasper "Stay Hungry. Stay Foolish"
mg: column-number-mode
Hi, Some weeks ago the column number display was removed from the modeline; while it's totally understandable this is a horror on slower displays, it's still usefull on faster displays. mg has a line-number-mode, but not a column-number-mode like Emacs has. This diff adds the column-number-mode, and thus partly reverting the previous change. Column numbers are still disabled by default. I've also removed the unconditional LINENOMODE define which is unused elsewhere, but the linenos handling could use some more cleanup; which is for a later diff. OK? Index: def.h === RCS file: /cvs/src/usr.bin/mg/def.h,v retrieving revision 1.131 diff -p -u -r1.131 def.h --- def.h 27 Nov 2012 19:46:46 - 1.131 +++ def.h 3 Dec 2012 10:53:14 - @@ -424,6 +424,7 @@ voidvtinit(void); void vttidy(void); void update(void); intlinenotoggle(int, int); +intcolnotoggle(int, int); /* echo.c X */ voideerase(void); Index: display.c === RCS file: /cvs/src/usr.bin/mg/display.c,v retrieving revision 1.38 diff -p -u -r1.38 display.c --- display.c 11 Nov 2012 20:40:49 - 1.38 +++ display.c 3 Dec 2012 10:53:14 - @@ -101,10 +101,8 @@ struct video blanks; /* Blank line im */ struct score *score; /* [NROW * NROW] */ -#ifndef LINENOMODE -#define LINENOMODE TRUE -#endif /* !LINENOMODE */ -static int linenos = LINENOMODE; +static int linenos = TRUE; +static int colnos = FALSE; /* Is macro recording enabled? */ extern int macrodef; @@ -129,6 +127,19 @@ linenotoggle(int f, int n) return (TRUE); } +int +colnotoggle(int f, int n) +{ + if (f & FFARG) + colnos = n > 0; + else + colnos = !colnos; + + sgarbf = TRUE; + + return (TRUE); +} + /* * Reinit the display data structures, this is called when the terminal * size changes. @@ -835,7 +846,12 @@ modeline(struct mgwin *wp) ++n; if (linenos) { - len = snprintf(sl, sizeof(sl), "--L%d", wp->w_dotline); + if (colnos) + len = snprintf(sl, sizeof(sl), "--L%d--C%d", wp->w_dotline, + getcolpos()); + else + len = snprintf(sl, sizeof(sl), "--L%d", wp->w_dotline); + if (len < sizeof(sl) && len != -1) n += vtputs(sl); } Index: funmap.c === RCS file: /cvs/src/usr.bin/mg/funmap.c,v retrieving revision 1.43 diff -p -u -r1.43 funmap.c --- funmap.c27 Nov 2012 19:46:46 - 1.43 +++ funmap.c3 Dec 2012 10:53:14 - @@ -40,6 +40,7 @@ static struct funmap functnames[] = { {capword, "capitalize-word",}, {changedir, "cd",}, {clearmark, "clear-mark",}, + {colnotoggle, "column-number-mode",}, {copyregion, "copy-region-as-kill",}, #ifdef REGEX {cntmatchlines, "count-matches",}, Index: mg.1 === RCS file: /cvs/src/usr.bin/mg/mg.1,v retrieving revision 1.72 diff -p -u -r1.72 mg.1 --- mg.127 Nov 2012 19:46:46 - 1.72 +++ mg.13 Dec 2012 10:53:14 - @@ -414,6 +414,8 @@ upper case, and subsequent letters to lo .It cd Change the global working directory. See also global-wd-mode. +.It column-number-mode +Show the current column number in the mode line. .It copy-region-as-kill Copy all of the characters in the region to the kill buffer, clearing the mark afterwards. -- Cheers, Jasper "Stay Hungry. Stay Foolish"
Re: mg: make-directory
On Thu, Nov 15, 2012 at 05:01:50PM +0100, Jasper Lievisse Adriaanse wrote: > Hi, > > One of the things lacking in mg was support M-x make-directory, which comes > quite handy. This diff mimics the rather silent behaviour of Emacs: there's > basically no feedback in case creating the directory failed for whatever > reason. Should we be more verbose about it, or just stay in line with Emacs? Here is a slightly updated diff which uses getbufcwd() and (in line with Emacs), returns a permission denied message, as spotted by lum@. Index: def.h === RCS file: /cvs/src/usr.bin/mg/def.h,v retrieving revision 1.129 diff -p -u -r1.129 def.h --- def.h 6 Nov 2012 18:04:10 - 1.129 +++ def.h 16 Nov 2012 22:09:16 - @@ -335,6 +335,7 @@ void dirinit(void); int changedir(int, int); int showcwdir(int, int); int getcwdir(char *, size_t); +int makedir(int, int); /* dired.c */ struct buffer *dired_(char *); Index: dir.c === RCS file: /cvs/src/usr.bin/mg/dir.c,v retrieving revision 1.19 diff -p -u -r1.19 dir.c --- dir.c 13 Jun 2008 20:07:40 - 1.19 +++ dir.c 16 Nov 2012 22:09:16 - @@ -9,6 +9,8 @@ * Modified for MG 2a by Mic Kaczmarczik 03-Aug-1987 */ +#include + #include "def.h" static char mgcwd[NFILEN]; @@ -73,5 +75,69 @@ getcwdir(char *buf, size_t len) if (strlcpy(buf, mgcwd, len) >= len) return (FALSE); + return (TRUE); +} + +/* Create the directory and it's parents. */ +/* ARGSUSED */ +int +makedir(int f, int n) +{ + struct stat sb; + int finished, ishere; + mode_t dir_mode, mode, oumask; + char bufc[NFILEN], *path, *slash; + + if (getbufcwd(bufc, sizeof(bufc)) != TRUE) + return (ABORT); + if ((path = eread("Make directory: ", bufc, NFILEN, + EFDEF | EFNEW | EFCR | EFFILE)) == NULL) + return (ABORT); + else if (path[0] == '\0') + return (FALSE); + + slash = path; + oumask = umask(0); + mode = 0777 & ~oumask; + dir_mode = mode | S_IWUSR | S_IXUSR; + + for (;;) { + slash += strspn(slash, "/"); + slash += strcspn(slash, "/"); + + finished = (*slash == '\0'); + *slash = '\0'; + + ishere = !stat(path, &sb); + if (!finished && ishere && S_ISDIR(sb.st_mode)) { + *slash = '/'; + continue; + } + + if (mkdir(path, finished ? mode : dir_mode) == 0) { + if (mode > 0777 && chmod(path, mode) < 0) { + umask(oumask); + return (ABORT); + } + } else { + if (!ishere || !S_ISDIR(sb.st_mode)) { + if (!ishere) + ewprintf("Creating directory: permission denied, %s", path); + else + eerase(); + + umask(oumask); + return (FALSE); + } + } + + if (finished) + break; + + *slash = '/'; + } + + eerase(); + umask(oumask); return (TRUE); } Index: file.c === RCS file: /cvs/src/usr.bin/mg/file.c,v retrieving revision 1.84 diff -p -u -r1.84 file.c --- file.c 30 Aug 2012 21:36:48 - 1.84 +++ file.c 16 Nov 2012 22:09:16 - @@ -258,13 +258,14 @@ readin(char *fname) dp = dirname(fname); if (stat(dp, &statbuf) == -1 && errno == ENOENT) { /* no read-only; like emacs */ - ewprintf("Parent directory missing"); + ewprintf("Use M-x make-directory RET RET to " + "create the directory and it's parents"); } else if (access(dp, W_OK) == -1 && errno == EACCES) { ewprintf("File not found and directory" " write-protected"); ro = TRUE; - } + } } } if (ro == TRUE) Index: funmap.c
mg: make-directory
Hi, One of the things lacking in mg was support M-x make-directory, which comes quite handy. This diff mimics the rather silent behaviour of Emacs: there's basically no feedback in case creating the directory failed for whatever reason. Should we be more verbose about it, or just stay in line with Emacs? diff --git def.h def.h index 6a752d5..11e3c24 100644 --- def.h +++ def.h @@ -335,6 +335,7 @@ void dirinit(void); int changedir(int, int); int showcwdir(int, int); int getcwdir(char *, size_t); +int makedir(int, int); /* dired.c */ struct buffer *dired_(char *); diff --git dir.c dir.c index 2352773..18eb946 100644 --- dir.c +++ dir.c @@ -9,6 +9,8 @@ * Modified for MG 2a by Mic Kaczmarczik 03-Aug-1987 */ +#include + #include "def.h" static char mgcwd[NFILEN]; @@ -75,3 +77,62 @@ getcwdir(char *buf, size_t len) return (TRUE); } + +/* Create the directory and it's parents. */ +/* ARGSUSED */ +int +makedir(int f, int n) +{ + struct stat sb; + int finished, ishere; + mode_t dir_mode, mode, oumask; + char bufc[NFILEN], *path, *slash; + + (void)strlcpy(bufc, curbp->b_cwd, sizeof(bufc)); + if ((path = eread("Make directory: ", bufc, NFILEN, + EFDEF | EFNEW | EFCR | EFFILE)) == NULL) + return (ABORT); + else if (path[0] == '\0') + return (FALSE); + + slash = path; + oumask = umask(0); + mode = 0777 & ~oumask; + dir_mode = mode | S_IWUSR | S_IXUSR; + + for (;;) { + slash += strspn(slash, "/"); + slash += strcspn(slash, "/"); + + finished = (*slash == '\0'); + *slash = '\0'; + + ishere = !stat(path, &sb); + if (!finished && ishere && S_ISDIR(sb.st_mode)) { + *slash = '/'; + continue; + } + + if (mkdir(path, finished ? mode : dir_mode) == 0) { + if (mode > 0777 && chmod(path, mode) < 0) { + umask(oumask); + return (ABORT); + } + } else { + if (!ishere || !S_ISDIR(sb.st_mode)) { + eerase(); + umask(oumask); + return (ABORT); + } + } + + if (finished) + break; + + *slash = '/'; + } + + eerase(); + umask(oumask); + return (TRUE); +} diff --git file.c file.c index 8c1297b..2717931 100644 --- file.c +++ file.c @@ -258,13 +258,14 @@ readin(char *fname) dp = dirname(fname); if (stat(dp, &statbuf) == -1 && errno == ENOENT) { /* no read-only; like emacs */ - ewprintf("Parent directory missing"); + ewprintf("Use M-x make-directory RET RET to " + "create the directory and it's parents"); } else if (access(dp, W_OK) == -1 && errno == EACCES) { ewprintf("File not found and directory" " write-protected"); ro = TRUE; - } + } } } if (ro == TRUE) diff --git funmap.c funmap.c index 66dd414..9a1be39 100644 --- funmap.c +++ funmap.c @@ -198,6 +198,7 @@ static struct funmap functnames[] = { {csprevfile, "cscope-prev-file",}, {cscreatelist, "cscope-create-list-of-files-to-index",}, {revertbuffer, "revert-buffer",}, + {makedir, "make-directory",}, {NULL, NULL,} }; diff --git mg.1 mg.1 index 42411c6..3d46675 100644 --- mg.1 +++ mg.1 @@ -662,6 +662,8 @@ Bind a key mapping in the local (topmost) mode. Unbind a key mapping in the local (topmost) mode. .It make-backup-files Toggle generation of backup files. +.It make-directory +Prompt the user for a path or directory name which is then created. .It mark-whole-buffer Marks whole buffer as a region by putting dot at the beginning and mark at the end of buffer. -- Cheers, Jasper "Stay Hungry. Stay Foolish"
glib threading issues
Hi, As some of you may be aware we're having a lot of issues in the glib port related to threading. And it seems it's now affecting non-GNOME ports as well. irssi just crashed on sparc64: (gdb) bt #0 0x0003781ec820 in ?? () from /usr/lib/libpthread.so.17.0 #1 0x000377ee700c in _thread_tag_init (tag=0xfffd2511) at /usr/src/lib/librthread/rthread_libc.c:46 #2 0x00037e15b404 in g_main_context_iteration () from /usr/local/lib/libglib-2.0.so.3400.0 #3 0x00037e15b4b0 in g_main_context_iteration () from /usr/local/lib/libglib-2.0.so.3400.0 #4 0x000173864ac4 in main () from /usr/local/bin/irssi (gdb) I'll rebuild irssi and glib with debugging symbols in order to get a better backtrace...but it seems the issues are far more reaching than we initially feared. It would be great if someone could help robert/ajacoutot/me in tracking down these issues. Thanks, Jasper
Re: mg: revert-buffer
on disk. .It save-buffer Save the contents of the current buffer if it has been changed, optionally creating a backup copy. On Fri, Oct 12, 2012 at 12:26:53PM +0200, Jasper Lievisse Adriaanse wrote: > Hi, > > Here's a diff that implement revert-buffer (C-x r). I've split gotoline into > the 'goto-line' specifics and the code that actually jumps to the line so it > can be re-used by revert-buffer to restore the current line. > > OK? > > -- > Cheers, > Jasper > > "Stay Hungry. Stay Foolish" > > Index: basic.c > === > RCS file: /cvs/src/usr.bin/mg/basic.c,v > retrieving revision 1.37 > diff -p -u -r1.37 basic.c > --- basic.c 18 Jun 2012 09:26:03 - 1.37 > +++ basic.c 12 Oct 2012 10:25:14 - > @@ -485,7 +485,6 @@ swapmark(int f, int n) > int > gotoline(int f, int n) > { > - struct line *clp; > char buf[32], *bufp; > const char *err; > > @@ -501,6 +500,16 @@ gotoline(int f, int n) > return (FALSE); > } > } > + return(setlineno(n)); > +} > + > +/* > + * Set the line number and switch to it. > + */ > +int > +setlineno(int n){ > + struct line *clp; > + > if (n >= 0) { > if (n == 0) > n++; > Index: buffer.c > === > RCS file: /cvs/src/usr.bin/mg/buffer.c,v > retrieving revision 1.81 > diff -p -u -r1.81 buffer.c > --- buffer.c 31 Aug 2012 18:06:42 - 1.81 > +++ buffer.c 12 Oct 2012 10:25:14 - > @@ -861,4 +861,35 @@ checkdirty(struct buffer *bp) > > return (TRUE); > } > - > + > +/* > + * Revert the current buffer to whatever is on disk. > + */ > +/* ARGSUSED */ > +int > +revertbuffer(int f, int n){ > + struct mgwin *wp = wheadp; > + struct buffer *bp = wp->w_bufp; > + char fbuf[NFILEN + 32]; > + int lineno; > + > + if (!strlen(bp->b_fname)) { > + ewprintf("Cannot revert buffer not associated with any files."); > + return (FALSE); > + } > + > + snprintf(fbuf, sizeof(fbuf), "Revert buffer from file %s", bp->b_fname); > + > + if (eyorn(fbuf)) { > + /* Save our current line, so we can go back it after reloading > the file. */ > + lineno = wp->w_dotline; > + if (readin(bp->b_list.l_name)) { > + return(setlineno(lineno)); > + } else { > + ewprintf("File %s no longer readable!", bp->b_fname); > + return (FALSE); > + } > + } > + > + return (FALSE); > +} > Index: def.h > === > RCS file: /cvs/src/usr.bin/mg/def.h,v > retrieving revision 1.125 > diff -p -u -r1.125 def.h > --- def.h 31 Aug 2012 18:06:42 - 1.125 > +++ def.h 12 Oct 2012 10:25:14 - > @@ -414,6 +414,7 @@ intnotmodified(int, int); > int popbuftop(struct buffer *, int); > int getbufcwd(char *, size_t); > int checkdirty(struct buffer *); > +int revertbuffer(int, int); > > /* display.c */ > int vtresize(int, int, int); > @@ -494,6 +495,7 @@ intsetmark(int, int); > int clearmark(int, int); > int swapmark(int, int); > int gotoline(int, int); > +int setlineno(int); > > /* random.c X */ > int showcpos(int, int); > Index: funmap.c > === > RCS file: /cvs/src/usr.bin/mg/funmap.c,v > retrieving revision 1.40 > diff -p -u -r1.40 funmap.c > --- funmap.c 14 Jun 2012 17:21:22 - 1.40 > +++ funmap.c 12 Oct 2012 10:25:15 - > @@ -196,7 +196,8 @@ static struct funmap functnames[] = { > {csprevmatch, "cscope-prev-symbol",}, > {csnextfile, "cscope-next-file",}, > {csprevfile, "cscope-prev-file",}, > - {cscreatelist, "cscope-create-list-of-files-to-index"}, > + {cscreatelist, "cscope-create-list-of-files-to-index",}, > + {revertbuffer, "revert-buffer",}, > {NULL, NULL,} > }; > > Index: keymap.c > === > RCS file: /cvs/src/usr.bin/mg/keymap.c,v > retrieving revision 1.50 > diff -p -u -r1.50 keymap.c > --- keymap.c 7 Jun 2012 15:15:04 - 1.50 > +++ keymap.
Re: mg: revert-buffer
Seems I broke something between testing and sending out the diff. Updating diff coming later. On Fri, Oct 12, 2012 at 12:40:47PM +0200, Christiano F. Haesbaert wrote: > I want this baadlyyy, ill have a look. > On Oct 12, 2012 12:30 PM, "Jasper Lievisse Adriaanse" > wrote: > > > Hi, > > > > Here's a diff that implement revert-buffer (C-x r). I've split gotoline > > into > > the 'goto-line' specifics and the code that actually jumps to the line so > > it > > can be re-used by revert-buffer to restore the current line. > > > > OK? > > > > -- > > Cheers, > > Jasper > > > > "Stay Hungry. Stay Foolish" > > > > Index: basic.c > > === > > RCS file: /cvs/src/usr.bin/mg/basic.c,v > > retrieving revision 1.37 > > diff -p -u -r1.37 basic.c > > --- basic.c 18 Jun 2012 09:26:03 - 1.37 > > +++ basic.c 12 Oct 2012 10:25:14 - > > @@ -485,7 +485,6 @@ swapmark(int f, int n) > > int > > gotoline(int f, int n) > > { > > - struct line *clp; > > char buf[32], *bufp; > > const char *err; > > > > @@ -501,6 +500,16 @@ gotoline(int f, int n) > > return (FALSE); > > } > > } > > + return(setlineno(n)); > > +} > > + > > +/* > > + * Set the line number and switch to it. > > + */ > > +int > > +setlineno(int n){ > > + struct line *clp; > > + > > if (n >= 0) { > > if (n == 0) > > n++; > > Index: buffer.c > > === > > RCS file: /cvs/src/usr.bin/mg/buffer.c,v > > retrieving revision 1.81 > > diff -p -u -r1.81 buffer.c > > --- buffer.c31 Aug 2012 18:06:42 - 1.81 > > +++ buffer.c12 Oct 2012 10:25:14 - > > @@ -861,4 +861,35 @@ checkdirty(struct buffer *bp) > > > > return (TRUE); > > } > > - > > + > > +/* > > + * Revert the current buffer to whatever is on disk. > > + */ > > +/* ARGSUSED */ > > +int > > +revertbuffer(int f, int n){ > > + struct mgwin *wp = wheadp; > > + struct buffer *bp = wp->w_bufp; > > + char fbuf[NFILEN + 32]; > > + int lineno; > > + > > + if (!strlen(bp->b_fname)) { > > + ewprintf("Cannot revert buffer not associated with any > > files."); > > + return (FALSE); > > + } > > + > > + snprintf(fbuf, sizeof(fbuf), "Revert buffer from file %s", > > bp->b_fname); > > + > > + if (eyorn(fbuf)) { > > + /* Save our current line, so we can go back it after > > reloading the file. */ > > + lineno = wp->w_dotline; > > + if (readin(bp->b_list.l_name)) { > > + return(setlineno(lineno)); > > + } else { > > + ewprintf("File %s no longer readable!", > > bp->b_fname); > > + return (FALSE); > > + } > > + } > > + > > + return (FALSE); > > +} > > Index: def.h > > === > > RCS file: /cvs/src/usr.bin/mg/def.h,v > > retrieving revision 1.125 > > diff -p -u -r1.125 def.h > > --- def.h 31 Aug 2012 18:06:42 - 1.125 > > +++ def.h 12 Oct 2012 10:25:14 - > > @@ -414,6 +414,7 @@ int notmodified(int, int); > > int popbuftop(struct buffer *, int); > > int getbufcwd(char *, size_t); > > int checkdirty(struct buffer *); > > +int revertbuffer(int, int); > > > > /* display.c */ > > intvtresize(int, int, int); > > @@ -494,6 +495,7 @@ int setmark(int, int); > > int clearmark(int, int); > > int swapmark(int, int); > > int gotoline(int, int); > > +int setlineno(int); > > > > /* random.c X */ > > int showcpos(int, int); > > Index: funmap.c > > === > > RCS file: /cvs/src/usr.bin/mg/funmap.c,v > > retrieving revision 1.40 > > diff -p -u -r1.40 funmap.c > > --- funmap.c14 Jun 2012 17:21:22 -000
mg: revert-buffer
Hi, Here's a diff that implement revert-buffer (C-x r). I've split gotoline into the 'goto-line' specifics and the code that actually jumps to the line so it can be re-used by revert-buffer to restore the current line. OK? -- Cheers, Jasper "Stay Hungry. Stay Foolish" Index: basic.c === RCS file: /cvs/src/usr.bin/mg/basic.c,v retrieving revision 1.37 diff -p -u -r1.37 basic.c --- basic.c 18 Jun 2012 09:26:03 - 1.37 +++ basic.c 12 Oct 2012 10:25:14 - @@ -485,7 +485,6 @@ swapmark(int f, int n) int gotoline(int f, int n) { - struct line *clp; char buf[32], *bufp; const char *err; @@ -501,6 +500,16 @@ gotoline(int f, int n) return (FALSE); } } + return(setlineno(n)); +} + +/* + * Set the line number and switch to it. + */ +int +setlineno(int n){ + struct line *clp; + if (n >= 0) { if (n == 0) n++; Index: buffer.c === RCS file: /cvs/src/usr.bin/mg/buffer.c,v retrieving revision 1.81 diff -p -u -r1.81 buffer.c --- buffer.c31 Aug 2012 18:06:42 - 1.81 +++ buffer.c12 Oct 2012 10:25:14 - @@ -861,4 +861,35 @@ checkdirty(struct buffer *bp) return (TRUE); } - + +/* + * Revert the current buffer to whatever is on disk. + */ +/* ARGSUSED */ +int +revertbuffer(int f, int n){ + struct mgwin *wp = wheadp; + struct buffer *bp = wp->w_bufp; + char fbuf[NFILEN + 32]; + int lineno; + + if (!strlen(bp->b_fname)) { + ewprintf("Cannot revert buffer not associated with any files."); + return (FALSE); + } + + snprintf(fbuf, sizeof(fbuf), "Revert buffer from file %s", bp->b_fname); + + if (eyorn(fbuf)) { + /* Save our current line, so we can go back it after reloading the file. */ + lineno = wp->w_dotline; + if (readin(bp->b_list.l_name)) { + return(setlineno(lineno)); + } else { + ewprintf("File %s no longer readable!", bp->b_fname); + return (FALSE); + } + } + + return (FALSE); +} Index: def.h === RCS file: /cvs/src/usr.bin/mg/def.h,v retrieving revision 1.125 diff -p -u -r1.125 def.h --- def.h 31 Aug 2012 18:06:42 - 1.125 +++ def.h 12 Oct 2012 10:25:14 - @@ -414,6 +414,7 @@ int notmodified(int, int); int popbuftop(struct buffer *, int); int getbufcwd(char *, size_t); int checkdirty(struct buffer *); +int revertbuffer(int, int); /* display.c */ intvtresize(int, int, int); @@ -494,6 +495,7 @@ int setmark(int, int); int clearmark(int, int); int swapmark(int, int); int gotoline(int, int); +int setlineno(int); /* random.c X */ int showcpos(int, int); Index: funmap.c === RCS file: /cvs/src/usr.bin/mg/funmap.c,v retrieving revision 1.40 diff -p -u -r1.40 funmap.c --- funmap.c14 Jun 2012 17:21:22 - 1.40 +++ funmap.c12 Oct 2012 10:25:15 - @@ -196,7 +196,8 @@ static struct funmap functnames[] = { {csprevmatch, "cscope-prev-symbol",}, {csnextfile, "cscope-next-file",}, {csprevfile, "cscope-prev-file",}, - {cscreatelist, "cscope-create-list-of-files-to-index"}, + {cscreatelist, "cscope-create-list-of-files-to-index",}, + {revertbuffer, "revert-buffer",}, {NULL, NULL,} }; Index: keymap.c === RCS file: /cvs/src/usr.bin/mg/keymap.c,v retrieving revision 1.50 diff -p -u -r1.50 keymap.c --- keymap.c7 Jun 2012 15:15:04 - 1.50 +++ keymap.c12 Oct 2012 10:25:15 - @@ -177,7 +177,7 @@ static PF cXcar[] = { nextwind, /* o */ prevwind, /* p */ rescan, /* q */ - rescan, /* r */ + revertbuffer, /* r */ savebuffers,/* s */ rescan, /* t */ undo/* u */ Index: mg.1 === RCS file: /cvs/src/usr.bin/mg/mg.1,v retrieving revision 1.68 diff -p -u -r1.68 mg.1 --- mg.111 Jul 2012 19:56:13 - 1.68 +++ mg.112 Oct 2012 10:25:15 - @@ -249,6 +249,8 @@ other-window other-window .It C-x p previous-window +.It C-x r +revert-buffer .It C-x s save-some-buffers .It C-x u @@ -752,6 +754,8 @@ is negative, it is that line from the bo .It redraw-display Refresh the display. Recomputes all window sizes in ca
Re: make mg statusline a bit more informative
On Wed, Oct 10, 2012 at 03:31:30PM +0200, Mark Kettenis wrote: > > Date: Wed, 10 Oct 2012 15:12:59 +0200 > > From: Jasper Lievisse Adriaanse > > > > Currently the statusline in mg shows the line and column numbers, which is > > nice but doesn't let you know your relative position in the file. > > > > Emacs shows 'top', 'bot', 'all' or your relative position like '42%'. This > > diff implements that behaviour in mg too. > > Emacs uses 'Top', 'Bot' and 'All' and: > > > From: > > (fundamental-fill)--L3--C31 > > to: > > (fundamental-fill)--9%--L69--C0 > --L69--C0--9%-- > > > or > > (fundamental-fill)--all--L1--C0 > > --L1--C0--All-- Sure, let's go all the way then :) Index: display.c === RCS file: /cvs/src/usr.bin/mg/display.c,v retrieving revision 1.37 diff -p -u -r1.37 display.c --- display.c 4 Jun 2009 02:23:37 - 1.37 +++ display.c 10 Oct 2012 13:39:00 - @@ -835,8 +835,21 @@ modeline(struct mgwin *wp) ++n; if (linenos) { - len = snprintf(sl, sizeof(sl), "--L%d--C%d", wp->w_dotline, - getcolpos()); + char location[4], r_location[4]; + + if (bp->b_lines <= wp->w_ntrows) { + strlcpy(location, "All", sizeof(location)); + } else if (wp->w_dotline <= wp->w_ntrows) { + strlcpy(location, "Top", sizeof(location)); + } else if (wp->w_dotline >= (bp->b_lines - wp->w_ntrows)) { + strlcpy(location, "Bot", sizeof(location)); + } else { + snprintf(r_location, sizeof(r_location), "%d%%", (100 * wp->w_dotline) / bp->b_lines); + strlcpy(location, r_location, sizeof(location)); + } + + len = snprintf(sl, sizeof(sl), "--L%d--C%d--%s", + wp->w_dotline, getcolpos(), location); if (len < sizeof(sl) && len != -1) n += vtputs(sl); } -- Cheers, Jasper "Stay Hungry. Stay Foolish"
make mg statusline a bit more informative
Currently the statusline in mg shows the line and column numbers, which is nice but doesn't let you know your relative position in the file. Emacs shows 'top', 'bot', 'all' or your relative position like '42%'. This diff implements that behaviour in mg too. From: (fundamental-fill)--L3--C31 to: (fundamental-fill)--9%--L69--C0 or (fundamental-fill)--all--L1--C0 you get the idea. Index: display.c === RCS file: /cvs/src/usr.bin/mg/display.c,v retrieving revision 1.37 diff -p -u -r1.37 display.c --- display.c 4 Jun 2009 02:23:37 - 1.37 +++ display.c 10 Oct 2012 11:56:51 - @@ -835,8 +835,21 @@ modeline(struct mgwin *wp) ++n; if (linenos) { - len = snprintf(sl, sizeof(sl), "--L%d--C%d", wp->w_dotline, - getcolpos()); + char location[4], r_location[4]; + + if (bp->b_lines <= wp->w_ntrows) { + strlcpy(location, "all", sizeof(location)); + } else if (wp->w_dotline <= wp->w_ntrows) { + strlcpy(location, "top", sizeof(location)); + } else if (wp->w_dotline >= (bp->b_lines - wp->w_ntrows)) { + strlcpy(location, "bot", sizeof(location)); + } else { + snprintf(r_location, sizeof(r_location), "%d%%", (100 * wp->w_dotline) / bp->b_lines); + strlcpy(location, r_location, sizeof(location)); + } + + len = snprintf(sl, sizeof(sl), "--%s--L%d--C%d", + location, wp->w_dotline, getcolpos()); if (len < sizeof(sl) && len != -1) n += vtputs(sl); } -- Cheers, Jasper "Stay Hungry. Stay Foolish"
Re: Diff to support so-called "gaming" USB keyboards
On Tue, Jul 03, 2012 at 03:23:16PM -0700, Mike Larkin wrote: > Many low-cost USB keyboards have a limit of either 3 or 6 simultaneous > keypresses before they wedge and stop supplying any more keypress events > (at least until you release one of the pressed keys). > > Some newer (usually called "gaming") keyboards use a different way of > reporting keypress events in order to support an arbitrary number of > simultaneous keypresses (likely under the assumption that in certain > games, you might need more than 3 or 6 keys pressed at the same time). > > Our USB HID keyboard code had some bad assumptions in it - namely, that > every key reported in this fashion was a 'modifier' key like shift, > alt, or control, and that there would only be 8 such keys maximum. > > The diff below reworks the HID keyboard code a bit to remove these > assumptions and support these newer style USB keyboards. It also > changes the term 'modifier' to 'variable' which is a more proper > description of these keys (as per the HID spec), in various > comments and printfs. > > If you have a USB keyboard (whether or not it is a "gaming" variety), > please test this diff to ensure that it does not break you. I've tested > on i386 and amd64 on a variety of keyboards and haven't seen any > problems, so it's time to turn it loose to a wider audience. > > -ml This keyboard is still working fine: uhidev2 at uhub2 port 1 configuration 1 interface 0 "Microsoft Natural\M-. Ergonomic Keyboard 4000" rev 2.00/1.73 addr 2 uhidev2: iclass 3/1 ukbd1 at uhidev2: 8 variable keys, 6 key codes wskbd2 at ukbd1 mux 1 wskbd2: connecting to wsdisplay0 uhidev3 at uhub2 port 1 configuration 1 interface 1 "Microsoft Natural\M-. Ergonomic Keyboard 4000" rev 2.00/1.73 addr 2 uhidev3: iclass 3/0, 1 report id uhid0 at uhidev3 reportid 1: input=7, output=0, feature=0 Although it's still suffering from the fact I need to detach/attach the cables upon every boot/suspend otherwise it just sits there playing dead. But that's unrelated to this diff. > Index: hidkbd.c > === > RCS file: /cvs/src/sys/dev/usb/hidkbd.c,v > retrieving revision 1.5 > diff -a -u -r1.5 hidkbd.c > --- hidkbd.c 9 Nov 2011 14:22:38 - 1.5 > +++ hidkbd.c 29 Jun 2012 06:45:59 - > @@ -41,6 +41,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -164,6 +165,8 @@ > { > const char *parserr; > > + kbd->sc_var = NULL; > + > parserr = hidkbd_parse_desc(kbd, id, desc, dlen); > if (parserr != NULL) { > printf(": %s\n", parserr); > @@ -171,8 +174,8 @@ > } > > #ifdef DIAGNOSTIC > - printf(": %d modifier keys, %d key codes", > - kbd->sc_nmod, kbd->sc_nkeycode); > + printf(": %d variable keys, %d key codes", > + kbd->sc_nvar, kbd->sc_nkeycode); > #endif > > kbd->sc_device = self; > @@ -245,6 +248,9 @@ > if (kbd->sc_wskbddev != NULL) > rv = config_detach(kbd->sc_wskbddev, flags); > > + if (kbd->sc_var != NULL) > + free(kbd->sc_var, M_DEVBUF); > + > return (rv); > } > > @@ -263,11 +269,9 @@ > } > #endif > > - /* extract key modifiers */ > - ud->modifiers = 0; > - for (i = 0; i < kbd->sc_nmod; i++) > - if (hid_get_data(data, &kbd->sc_modloc[i])) > - ud->modifiers |= kbd->sc_mods[i].mask; > + /* extract variable keys */ > + for (i = 0; i < kbd->sc_nvar; i++) > + ud->var[i] = (u_int8_t)hid_get_data(data, &kbd->sc_var[i].loc); > > /* extract keycodes */ > memcpy(ud->keycode, data + kbd->sc_keycodeloc.pos / 8, > @@ -311,7 +315,6 @@ > void > hidkbd_decode(struct hidkbd *kbd, struct hidkbd_data *ud) > { > - uint32_t mod, omod; > u_int16_t ibuf[MAXKEYS];/* chars events */ > int s; > int nkeys, i, j; > @@ -347,15 +350,15 @@ > return; /* ignore */ > } > nkeys = 0; > - mod = ud->modifiers; > - omod = kbd->sc_odata.modifiers; > - if (mod != omod) > - for (i = 0; i < kbd->sc_nmod; i++) > - if (( mod & kbd->sc_mods[i].mask) != > - (omod & kbd->sc_mods[i].mask)) > - ADDKEY(kbd->sc_mods[i].key | > -(mod & kbd->sc_mods[i].mask > - ? PRESS : RELEASE)); > + > + for (i = 0; i < kbd->sc_nvar; i++) > + if ((kbd->sc_odata.var[i] & kbd->sc_var[i].mask) != > + (ud->var[i] & kbd->sc_var[i].mask)) { > + ADDKEY(kbd->sc_var[i].key | > + ((ud->var[i] & kbd->sc_var[i].mask) ? > + PRESS : RELEASE)); > + } > + > if (memcmp(ud->keycode, kbd->sc_odata.keycode, kbd->sc_nkeycode) != 0) { > /* Check for released keys. */ > for (i = 0; i <
Re: tinyscheme + mg
On Thu, Jun 28, 2012 at 10:12:38AM -0400, Ted Unangst wrote: > On Thu, Jun 28, 2012 at 15:21, Jasper Lievisse Adriaanse wrote: > > On Thu, Jun 28, 2012 at 08:35:18AM -0400, Kjell Wooding wrote: > > >> 2. I should point out that all of mg (other than theo.c) is currently > >> PUBLIC DOMAIN, not merely BSD, so this change is significant, license-wise. > >> Please be pedantic about including licenses. > > I think it's reasonable to maintain an ifdef to omit scheme (and > theo.c if you like, as I'd probably redo that in scheme) to get > "pure" public domain mg. The cscope.c and ctags.c files are also non-PD at the moment. > >> 3. Why scheme? Yes, emacs uses Lisp. But seriously, so? Why not just add, > >> say, perl bindings? > > In large part, yes, because emacs uses lisp. I think it's fun. > > If you need a technical reason, it's because 90% of the mg commands, > like copy-region-as-kill, are not legal perl function names. Seconded. > > I'm totally fine with putting mgscheme.c into the public domain, if tedu > > agrees too of course. > > It's not a big deal, but I'd prefer to keep it BSD. Most of it > already has to be, so it seems logical that all scheme extensions are > one license. -- Cheers, Jasper "Stay Hungry. Stay Foolish"
Re: tinyscheme + mg
On Thu, Jun 28, 2012 at 08:35:18AM -0400, Kjell Wooding wrote: > Thoughts, since we have been down this road before. > > 1. You can remap keys, in your ~/.mg file > > 2. I should point out that all of mg (other than theo.c) is currently > PUBLIC DOMAIN, not merely BSD, so this change is significant, license-wise. > Please be pedantic about including licenses. > > 3. Why scheme? Yes, emacs uses Lisp. But seriously, so? Why not just add, > say, perl bindings? > > 4. Seriously, please be pedantic about licenses. Part of me dies when we > see a new source file without one. > > I'm all for adding support for scripting into mg, though I would be tempted > to rip out all nonessential functionality first (ng? ;) and add it back via > the scripting language. I would think the goal should be to make mg > significantly *smaller* any such change > > -kj Regarding the licenses, Kettenis pointed out I forgot to add the original copyright headers, which I have since added to my local repo. It's reproduced here for reference: Copyright (c) 2000, Dimitrios Souflis All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Dimitrios Souflis nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. I'm totally fine with putting mgscheme.c into the public domain, if tedu agrees too of course. > On Thursday, June 28, 2012, Loganaden Velvindron wrote: > > > If Jasper is going to take care of it, why not :-) ? > > > > I'd like to get the ability to remap keys, without hacking src. > > > > (As an mg user) > > > > On Thu, Jun 28, 2012 at 2:06 PM, Mark Lumsden > > > > > wrote: > > >> Here is an updated diff for mg with tinyscheme integration. It's based > > on > > >> tedu's original diff with various tweaks and changes. For those worried > > about > > >> mg being too bloated, rest assured, it's still small and lean and a big > > part > > >> smaller than vi ;-) > > >> It's not fully possible to turn mg into your mail client, but I'd like > > to commit > > >> this diff and work on it futher in tree (not the mail-client thing, > > that would > > >> bloat mg and that's far from desired). > > >> > > >> Includes some fixes by lum@ and Sunil Nimmagadda too. > > >> > > >> Diff is also at http://crappydiffs.org/tinyschemg.diff > > >> > > > > > > I would appreciate some feedback on the inclusion of this diff in mg > > > since I am unlikely to use tinyscheme myself but can see why others > > > would like it added. Are there are strong feelings about it either > > > way? > > > > > > -lum > > > > > > > > > > > -- > > Brightest day, > > Blackest night, > > No bug shall escape my sight, > > And those who worship evil's mind, > > be wary of my powers, > > puffy lantern's light ! > -- Cheers, Jasper "Stay Hungry. Stay Foolish"
Re: compat_linux: Fix counting in futex_wake.
On Tue, Jun 19, 2012 at 12:13:09PM +0300, Paul Irofti wrote: > Count should always be zero no matter if we need to relocate or not. > > Okay? Makes sense to me (including the other diffs you sent which I didn't reply to individually). > Index: linux_futex.c > === > RCS file: /cvs/src/sys/compat/linux/linux_futex.c,v > retrieving revision 1.4 > diff -u -p -r1.4 linux_futex.c > --- linux_futex.c 19 Jun 2012 08:50:59 - 1.4 > +++ linux_futex.c 19 Jun 2012 09:10:20 - > @@ -496,12 +496,10 @@ int > futex_wake(struct futex *f, int n, struct futex *newf, int n2) > { > struct waiting_proc *wp; > - int count; > + int count = 0; > > KASSERT(newf != f); > MUTEX_ASSERT_LOCKED(&futex_lock); > - > - count = newf ? 0 : 1; > > /* >* first, wake up any threads sleeping on this futex. > -- Cheers, Jasper "Stay Hungry. Stay Foolish"
Re: [PATCH] dired mg patch
On Thu, Aug 18, 2011 at 08:30:02AM -0400, Loganaden Velvindron wrote: > I used a function for warping the dot. This > makes the diff simpler. Since kjell@ has slacked out; any objections to committing this revision of the diff? > Index: dired.c > === > RCS file: /cvs/src/usr.bin/mg/dired.c,v > retrieving revision 1.48 > diff -u -p -r1.48 dired.c > --- dired.c 23 Jan 2011 00:45:03 - 1.48 > +++ dired.c 18 Aug 2011 12:23:47 - > @@ -36,6 +36,11 @@ static int d_rename(int, int); > static intd_shell_command(int, int); > static intd_create_directory(int, int); > static intd_makename(struct line *, char *, size_t); > +static intd_warpdot(char *); > +static intd_forwpage(int, int); > +static intd_backpage(int, int); > +static intd_forwline(int, int); > +static intd_backline(int, int); > static void reaper(int); > > extern struct keymap_s helpmap, cXmap, metamap; > @@ -57,15 +62,15 @@ static PF dirednul[] = { > static PF diredcl[] = { > reposition, /* ^L */ > d_findfile, /* ^M */ > - forwline, /* ^N */ > + d_forwline, /* ^N */ > rescan, /* ^O */ > - backline, /* ^P */ > + d_backline, /* ^P */ > rescan, /* ^Q */ > backisearch,/* ^R */ > forwisearch,/* ^S */ > rescan, /* ^T */ > universal_argument, /* ^U */ > - forwpage, /* ^V */ > + d_forwpage, /* ^V */ > rescan, /* ^W */ > NULL/* ^X */ > }; > @@ -77,7 +82,7 @@ static PF diredcz[] = { > rescan, /* ^] */ > rescan, /* ^^ */ > rescan, /* ^_ */ > - forwline, /* SP */ > + d_forwline, /* SP */ > d_shell_command,/* ! */ > rescan, /* " */ > rescan, /* # */ > @@ -99,9 +104,9 @@ static PF diredc[] = { > }; > > static PF diredn[] = { > - forwline, /* n */ > + d_forwline, /* n */ > d_ffotherwindow,/* o */ > - backline, /* p */ > + d_backline, /* p */ > rescan, /* q */ > d_rename, /* r */ > rescan, /* s */ > @@ -116,13 +121,32 @@ static PF direddl[] = { > d_undelbak /* del */ > }; > > +static PF diredbp[] = { > + d_backpage /* v */ > +}; > + > +static PF dirednull[] = { > + NULL > +}; > + > #ifndef DIRED_XMAPS > #define NDIRED_XMAPS0 /* number of extra map sections */ > #endif /* DIRED_XMAPS */ > > -static struct KEYMAPE (6 + NDIRED_XMAPS + IMAPEXT) diredmap = { > - 6 + NDIRED_XMAPS, > - 6 + NDIRED_XMAPS + IMAPEXT, > +static struct KEYMAPE (1 + IMAPEXT) d_backpagemap = { > + 1, > + 1 + IMAPEXT, > + rescan, > + { > + { > + 'v', 'v', diredbp, NULL > + } > + } > +}; > + > +static struct KEYMAPE (7 + NDIRED_XMAPS + IMAPEXT) diredmap = { > + 7 + NDIRED_XMAPS, > + 7 + NDIRED_XMAPS + IMAPEXT, > rescan, > { > #ifndef NO_HELP > @@ -138,6 +162,10 @@ static struct KEYMAPE (6 + NDIRED_XMAPS > CCHR('L'), CCHR('X'), diredcl, (KEYMAP *) & cXmap > }, > { > + CCHR('['), CCHR('['), dirednull, (KEYMAP *) & > + d_backpagemap > + }, > + { > CCHR('Z'), '+', diredcz, (KEYMAP *) & metamap > }, > { > @@ -592,6 +620,75 @@ d_makename(struct line *lp, char *fn, si > return ((lgetc(lp, 2) == 'd') ? TRUE : FALSE); > } > > +static int > +d_warpdot(char *l_text) > +{ > + char *track, *anchor = NULL; > + int col = 0; > + > + track = l_text; > + while (track != NULL && track - l_text <= strlen(l_text)) { > + if(strspn(track, " ") > 0) { > + track += strspn(track, " "); > + col++; > + if (col == 9) { > + anchor = track; > + break; > + } > + } > + else > + track++; > + } > + if (anchor == NULL) > + return (NULL); > + else > + return (anchor - l_text); > +} > + > +static int > +d_forwpage(int f, int n) > +{ > + forwpage(f | FFRAND, n); > + if (d_warpdot(curwp->w_dotp->l_text) == NULL) > + curwp->w_doto = 0; > + else > + curwp->w_doto = d_warpdot(curwp->w_dotp->l_text); > + return TRUE; > +} > + > +static int > +d_backpage (int f, int n) > +{ > + backpage(f | FFRAND, n
Re: kdump: resolve sysctl numbers
On Wed, Jul 27, 2011 at 10:58:22AM -0400, Ted Unangst wrote: > On Wed, Jul 27, 2011, Otto Moerbeek wrote: > > > +#define SETNAME(name) do { names = (name); limit = nitems(name); } while > > (0) > > userland is not supposed to use nitems I think? But it keeps sneaking > in because the kernel headers don't protect it. That's right. It's used in some places like pcidump, npppd and tmux, but it's locally defined as: #ifndef nitems #define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) #endif -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: minor mount_ntfs cleanup
On Mon, Jun 27, 2011 at 06:15:15PM -0400, Kenneth R Westerback wrote: > On Mon, Jun 27, 2011 at 04:52:46PM -0400, Ted Unangst wrote: > > The original porting effort left behind some unneeded bits. > > I'm not going to encourage NTFS use by ok'ing it. But if I was, I > would. > > Ken Yep, Ok with me. > > Index: mount_ntfs.c > > === > > RCS file: /cvs/src/sbin/mount_ntfs/mount_ntfs.c,v > > retrieving revision 1.13 > > diff -u -r1.13 mount_ntfs.c > > --- mount_ntfs.c27 Jun 2011 19:47:22 - 1.13 > > +++ mount_ntfs.c27 Jun 2011 20:51:26 - > > @@ -34,39 +34,26 @@ > > * Id: mount_ntfs.c,v 1.1.1.1 1999/02/03 03:51:19 semenu Exp > > */ > > > > -#include > > #include > > -#define NTFS > > #include > > #include > > -#include > > + > > #include > > -#include > > -#include > > #include > > #include > > #include > > #include > > #include > > -#include > > > > #include > > > > static const struct mntopt mopts[] = { > > MOPT_STDOPTS, > > -#ifdef MNT_GETARGS > > - MOPT_GETARGS, > > -#endif > > { NULL } > > }; > > > > -#ifndef __dead2 > > -#define __dead2 __attribute__((__noreturn__)) > > -#endif > > - > > -static voidusage(void) __dead2; > > -mode_t a_mask(char *); > > -int main(int, char **); > > +static __dead void usage(void); > > +static mode_t a_mask(char *); > > > > int > > main(int argc, char *argv[]) > > @@ -77,7 +64,7 @@ > > char *dev, dir[MAXPATHLEN]; > > > > mntflags = set_gid = set_uid = set_mask = 0; > > - (void)memset(&args, '\0', sizeof(args)); > > + memset(&args, 0, sizeof(args)); > > > > while ((c = getopt(argc, argv, "aiu:g:m:o:")) != -1) { > > switch (c) { > > @@ -102,15 +89,12 @@ > > case 'o': > > getmntopts(optarg, mopts, &mntflags); > > break; > > - case '?': > > default: > > usage(); > > break; > > } > > } > > > > - mntflags |= MNT_RDONLY; > > - > > if (optind + 2 != argc) > > usage(); > > > > @@ -119,7 +103,9 @@ > > err(1, "realpath %s", argv[optind + 1]); > > > > args.fspec = dev; > > - args.export_info.ex_root = 65534; /* unchecked anyway on DOS fs */ > > + args.export_info.ex_root = 65534; /* unchecked anyway on NTFS */ > > + > > + mntflags |= MNT_RDONLY; > > if (mntflags & MNT_RDONLY) > > args.export_info.ex_flags = MNT_EXRDONLY; > > else > > @@ -138,18 +124,10 @@ > > if (mount(MOUNT_NTFS, dir, mntflags, &args) < 0) > > err(EX_OSERR, "%s on %s", dev, dir); > > > > -#ifdef MNT_GETARGS > > - if (mntflags & MNT_GETARGS) { > > - char buf[1024]; > > - (void)snprintb(buf, sizeof(buf), NTFS_MFLAG_BITS, args.flag); > > - printf("uid=%d, gid=%d, mode=0%o, flags=%s\n", args.uid, > > - args.gid, args.mode, buf); > > - } > > -#endif > > - exit (0); > > + exit(0); > > } > > > > -mode_t > > +static mode_t > > a_mask(char *s) > > { > > int done, rv; > -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: [Update] xenocara/xkeyboard-config
On Thu, Jun 23, 2011 at 06:08:47PM +0600, Alexandr Shadchin wrote: > Hi, > > I prepared update package xkeyboard-config to the latest release 2.3. > Patch available on http://koba.devio.us/distfiles/xkeyboard-config-2.3.diff > Tested on amd64. > > -- > Alexandr Shadchin No problems here on amd64 with sun type 6. -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: switch to xkeyboard-config XKB configuration: please test
On Tue, May 31, 2011 at 08:22:09PM +0200, Antoine Jacoutot wrote: > On Mon, 30 May 2011, Matthieu Herrb wrote: > > > Hi, > > > > Some years ago X.Org decided to switch to a new set of XKB (the X > > Keyboard extension) data files known as xkeyboard-config. > > > > For various reasons (local changes, complexity of the build system for > > xkeyboard-config, slacking) Xenocara is still using the old and > > unmaintained xkb-data. > > > > The update is needed for libxklavier which is a required library for > > some Desktop related ports. Keyboard handling in GNOME3 for one will > > not work at all without this update. KDE4 may require the same at some > > point and same goes for ports that use xkeyboard-config. > > > > With the help of Alexandr Shadchin, Xenocara now ready to switch to > > xkeyboard-config, but we'd like to have a last round of tests. > > > > For this apply the patch below and rebuild xenocara from sources. > > > > Please note that this will move the xkb data files from /etc/X11 to > > /usr/X11R6/share/X11 > > > > Report success/failures to shadchin@ and me. Thanks. > > Works beautifully for me on i386 and amd64. I also tried macppc, it > worked but I'm using a regular keyboard, not an apple one, so I'm not > sure that counts :) > > > > Index: share/mk/bsd.xconf.mk > > === > > RCS file: /cvs/OpenBSD/xenocara/share/mk/bsd.xconf.mk,v > > retrieving revision 1.18 > > diff -u -p -u -r1.18 bsd.xconf.mk > > --- share/mk/bsd.xconf.mk 8 Mar 2011 20:48:59 - 1.18 > > +++ share/mk/bsd.xconf.mk 29 May 2011 17:07:33 - > > @@ -19,4 +19,4 @@ XENOCARA_BUILD_PIXMAN?=yes > > .endif > > > > # Build xkeyboard-config? > > -XENOCARA_USE_XKEYBOARD_CONFIG?=no > > +XENOCARA_USE_XKEYBOARD_CONFIG?=yes > > > > > > -- > Antoine Works fine on my i386, amd64 and sparc64 (all with standard keyboards). I should be able to test a Sun Type 6 USB beginning next week. -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: NELEM() -> nitems() in sys/i386/i386/est.c and bin/ksh/
On Fri, May 13, 2011 at 03:08:36AM +0400, Vadim Zhukov wrote: > Hello all. > > This diff removes NELEM() definitions in favour of nitems(). Not sure > about bin/ksh/ part, but sys/i386/i386/est.c is obviously a leftover. > > There are more NELEM() items in tree, but they belong to foreign stuff > and therefore should not be touched, as far as I understand. > > -- > Best wishes, > Vadim Zhukov > > A: Because it messes up the order in which people normally read text. > Q: Why is top-posting such a bad thing? > A: Top-posting. > Q: What is the most annoying thing in e-mail? the est.c diff is correct (and has been committed), but the ksh part isn't. we don't want userland to use nitems() yet. > Index: sys/arch/i386/i386/est.c > === > RCS file: /cvs/src/sys/arch/i386/i386/est.c,v > retrieving revision 1.36 > diff -u -p -r1.36 est.c > --- sys/arch/i386/i386/est.c 5 Jul 2010 22:47:41 - 1.36 > +++ sys/arch/i386/i386/est.c 12 May 2011 23:03:48 - > @@ -862,10 +862,8 @@ struct fqlist { > struct est_op *table; > }; > > -#define NELEM(x) (sizeof(x) / sizeof((x)[0])) > - > #define ENTRY(ven, bus_clk, tab) \ > - { CPUVENDOR_##ven, bus_clk == BUS133 ? 1 : 0, NELEM(tab), tab } > + { CPUVENDOR_##ven, bus_clk == BUS133 ? 1 : 0, nitems(tab), tab } > > #define BUS_CLK(fqp) ((fqp)->bus_clk ? BUS133 : BUS100) > > @@ -1082,7 +1080,7 @@ est_init(const char *cpu_device, int ven > /* >* Find an entry which matches (vendor, bus_clock, idhi, idlo) >*/ > - for (i = 0; i < NELEM(est_cpus); i++) { > + for (i = 0; i < nitems(est_cpus); i++) { > fql = &est_cpus[i]; > if (vendor == fql->vendor && bus_clock == BUS_CLK(fql) > && idhi == fql->table[0].ctrl > Index: bin/ksh/c_ulimit.c > === > RCS file: /cvs/src/bin/ksh/c_ulimit.c,v > retrieving revision 1.17 > diff -u -p -r1.17 c_ulimit.c > --- bin/ksh/c_ulimit.c21 Mar 2008 12:51:19 - 1.17 > +++ bin/ksh/c_ulimit.c12 May 2011 23:03:48 - > @@ -53,7 +53,7 @@ c_ulimit(char **wp) > #endif /* RLIMIT_VMEM */ > { (char *) 0 } > }; > - static char options[4 + NELEM(limits) * 2]; > + static char options[4 + nitems(limits) * 2]; > int how = SOFT | HARD; > const struct limits *l; > int optc, all = 0; > Index: bin/ksh/edit.c > === > RCS file: /cvs/src/bin/ksh/edit.c,v > retrieving revision 1.34 > diff -u -p -r1.34 edit.c > --- bin/ksh/edit.c20 May 2010 01:13:07 - 1.34 > +++ bin/ksh/edit.c12 May 2011 23:03:48 - > @@ -223,7 +223,7 @@ set_editmode(const char *ed) > > if ((rcp = strrchr(ed, '/'))) > ed = ++rcp; > - for (i = 0; i < NELEM(edit_flags); i++) > + for (i = 0; i < nitems(edit_flags); i++) > if (strstr(ed, options[(int) edit_flags[i]].name)) { > change_flag(edit_flags[i], OF_SPECIAL, 1); > return; > Index: bin/ksh/emacs.c > === > RCS file: /cvs/src/bin/ksh/emacs.c,v > retrieving revision 1.43 > diff -u -p -r1.43 emacs.c > --- bin/ksh/emacs.c 14 Mar 2011 21:20:01 - 1.43 > +++ bin/ksh/emacs.c 12 May 2011 23:03:49 - > @@ -1312,7 +1312,7 @@ x_bind( const char *a1, const char *a2, > > /* List function names */ > if (list) { > - for (f = 0; f < NELEM(x_ftab); f++) > + for (f = 0; f < nitems(x_ftab); f++) > if (x_ftab[f].xf_name && > !(x_ftab[f].xf_flags & XF_NOBIND)) > shprintf("%s\n", x_ftab[f].xf_name); > @@ -1352,11 +1352,11 @@ x_bind( const char *a1, const char *a2, > if (*a2 == 0) > f = XFUNC_insert; > else if (!macro) { > - for (f = 0; f < NELEM(x_ftab); f++) > + for (f = 0; f < nitems(x_ftab); f++) > if (x_ftab[f].xf_name && > strcmp(x_ftab[f].xf_name, a2) == 0) > break; > - if (f == NELEM(x_ftab) || x_ftab[f].xf_flags & XF_NOBIND) { > + if (f == nitems(x_ftab) || x_ftab[f].xf_flags & XF_NOBIND) { > bi_errorf("%s: no such function", a2); > return 1; > } > @@ -1402,7 +1402,7 @@ x_init_emacs(void) > for (i = 1; i < X_NTABS; i++) > for (j = 0; j < X_TABSZ; j++) > x_tab[i][j] = XFUNC_error; > - for (i = 0; i < NELEM(x_defbindings); i++) > + for (i = 0; i < nitems(x_defbindings); i++) > x_tab[(unsigned char)x_defbindings[i].xdb_tab] > [x_defbindings[i
Re: Bus Pirate: bus hacking tool for hardware developers
On Thu, May 12, 2011 at 06:00:53PM +, Jona Joachim wrote: > Hi, > I just wanted to share this board that I discovered today: > http://dangerousprototypes.com/bus-pirate-manual/ > > It's an uftdi(4) board that gives you access to the following bus > protocols: > 1-Wire, I2C, SPI, JTAG, RS-232, MIDI, ... > http://dangerousprototypes.com/docs/Features_overview > > I remember the photos of Theo soldering the I2C temperature chips to his > RAM, so I thought some of you might find this interesting. > > Note: I haven't tested it yet but I read some very good critics > > Best regards, > Jona > > -- > Worse is better > Richard P. Gabriel > I got a buspirate last week and I hope to have a port ready next week with some nice utils, like an SPI sniffer and stuff like that :) -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: Quick sanity test for sili(4)/ahci(4) diff
On Fri, May 06, 2011 at 10:52:19AM -0700, Matthew Dempsky wrote: > If you have a sili(4) or ahci(4), I'd appreciate a quick test of the > diff below. As long as you can still mount your disks without > panicking, then it worked. :) > > One test for each is sufficient, so please reply to the list to save > others from redundant effort. Works fine with this on amd64: ahci1 at pci0 dev 17 function 0 "ATI SBx00 SATA" rev 0x00: apic 4 int 22, AHCI 1.1 Cheers, Jasper > Index: ata/atascsi.c > === > RCS file: /home/mdempsky/anoncvs/cvs/src/sys/dev/ata/atascsi.c,v > retrieving revision 1.104 > diff -u -p -r1.104 atascsi.c > --- ata/atascsi.c 5 May 2011 19:23:05 - 1.104 > +++ ata/atascsi.c 6 May 2011 17:41:20 - > @@ -1590,10 +1590,12 @@ atascsi_io_get(void *cookie) > void > atascsi_io_put(void *cookie, void *io) > { > - struct ata_xfer *xa = io; > + struct atascsi_host_port*ahp = cookie; > + struct atascsi *as = ahp->ahp_as; > + struct ata_xfer *xa = io; > > xa->state = ATA_S_COMPLETE; /* XXX this state machine is dumb */ > - xa->ata_put_xfer(xa); > + as->as_methods->ata_put_xfer(xa); > } > > void > Index: ata/atascsi.h > === > RCS file: /home/mdempsky/anoncvs/cvs/src/sys/dev/ata/atascsi.h,v > retrieving revision 1.45 > diff -u -p -r1.45 atascsi.h > --- ata/atascsi.h 26 Jan 2011 21:41:00 - 1.45 > +++ ata/atascsi.h 5 May 2011 19:33:35 - > @@ -18,6 +18,9 @@ > * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > */ > > +#ifndef _DEV_ATA_ATASCSI_H_ > +#define _DEV_ATA_ATASCSI_H_ > + > struct atascsi; > struct scsi_link; > > @@ -327,8 +330,6 @@ struct ata_xfer { > void*atascsi_private; > > int pmp_port; > - > - void(*ata_put_xfer)(struct ata_xfer *); > }; > > /* > @@ -339,6 +340,7 @@ struct atascsi_methods { > int (*probe)(void *, int, int); > void(*free)(void *, int, int); > struct ata_xfer * (*ata_get_xfer)(void *, int); > + void(*ata_put_xfer)(struct ata_xfer *); > void(*ata_cmd)(struct ata_xfer *); > }; > > @@ -368,3 +370,5 @@ int atascsi_probe_dev(struct atascsi *, > int atascsi_detach_dev(struct atascsi *, int, int, int); > > void ata_complete(struct ata_xfer *); > + > +#endif /* _DEV_ATA_ATASCSI_H_ */ > Index: ic/sili.c > === > RCS file: /home/mdempsky/anoncvs/cvs/src/sys/dev/ic/sili.c,v > retrieving revision 1.47 > diff -u -p -r1.47 sili.c > --- ic/sili.c 26 Jan 2011 21:41:00 - 1.47 > +++ ic/sili.c 5 May 2011 19:34:11 - > @@ -211,6 +211,7 @@ struct atascsi_methods sili_atascsi_meth > sili_ata_probe, > sili_ata_free, > sili_ata_get_xfer, > + sili_ata_put_xfer, > sili_ata_cmd > }; > > @@ -833,7 +834,6 @@ sili_ccb_alloc(struct sili_port *sp) > ccb->ccb_xa.fis = (struct ata_fis_h2d *)&prb->fis; > ccb->ccb_xa.packetcmd = ((struct sili_prb_packet *)prb)->cdb; > ccb->ccb_xa.tag = i; > - ccb->ccb_xa.ata_put_xfer = sili_ata_put_xfer; > ccb->ccb_xa.state = ATA_S_COMPLETE; > > sili_put_ccb(ccb); > Index: pci/ahci.c > === > RCS file: /home/mdempsky/anoncvs/cvs/src/sys/dev/pci/ahci.c,v > retrieving revision 1.177 > diff -u -p -r1.177 ahci.c > --- pci/ahci.c24 Apr 2011 11:09:48 - 1.177 > +++ pci/ahci.c5 May 2011 19:33:58 - > @@ -622,6 +622,7 @@ struct atascsi_methods ahci_atascsi_meth > ahci_ata_probe, > ahci_ata_free, > ahci_ata_get_xfer, > + ahci_ata_put_xfer, > ahci_ata_cmd > }; > > @@ -1227,8 +1228,6 @@ nomem: > (struct ata_fis_h2d *)ccb->ccb_cmd_table->cfis; > ccb->ccb_xa.packetcmd = ccb->ccb_cmd_table->acmd; > ccb->ccb_xa.tag = i; > - > - ccb->ccb_xa.ata_put_xfer = ahci_ata_put_xfer; > > ccb->ccb_xa.state = ATA_S_COMPLETE; > ahci_put_ccb(ccb); > -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: ld.so speedup for large binaries with many shared libraries
On Fri, May 06, 2011 at 10:15:28AM +0100, Stuart Henderson wrote: > Just noticed I still have Ms for this. Has it been tested on enough > arch yet? So far I know it's been run on > > amd64 (sthen) > armish (sthen) > i386 (aja, sthen) > macppc (aja, sthen) > loongson (phessler) > > Any others? Considering how much it sucks if ld.so is broken, it would > be good to have reports from a few more arch, I would think hppa and > sparc64 as a minimum. sparc64 and loongson here, no issues. > On 2011/04/28 08:45, Antoine Jacoutot wrote: > > On Sat, 23 Apr 2011, Dale Rahn wrote: > > > > > Here is a diff that was originally hatched at c2k10 and finally > > > implemented > > > at k2k11. This has been tested lightly so needs to be tested on all > > > systems > > > with big and small programs. > > > > > > On some machines this can shave 15% off of the startup time of large > > > applications with lots of dynamically loaded libraries. > > > > > > Please test and let me know if there are any problems found. > > > > > > Yes I am intentionally cross posting this to ports@ as large ports > > > are the most affected by this diff. > > > > > > Maybe this will finally get ajacoutot@ off my back ;) > > > > Heh ;-) > > > > Anyway, I've been running with several variations of that diff on > > some machines (i386 and macppc) for several weeks without seeing any > > regressions. > > And I can confirm large beasts do benefit from it. > > > > -- > > Antoine > > > -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: adb(4)/pm_direct.c cleanup
On Tue, May 03, 2011 at 08:11:52AM +0530, Martin Pieuchot wrote: > On macppc, the pm_* methods are always attached to a PMU (or PMU99), so > no need to check for hardware. > > Tested here with a powerbook6,5. > > Ok? This appears to be working fine on my PowerBook4,1 (ibook g3), will do more testing tomorrow if needed. There's no dmesg change. [ using 481912 bytes of bsd ELF symbol table ] console out [ATY,RageM3p29s]console in [keyboard] , using ADB : memaddr 9400 size 400, : consaddr 96008000, : ioaddr 9002, size 2: memtag 8000, iotag 8000: width 1024 linebytes 1024 height 768 depth 8 Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2011 OpenBSD. All rights reserved. http://www.OpenBSD.org OpenBSD 4.9-current (GENERIC) #0: Tue Oct 5 17:18:42 CEST 2010 jasper@cupertino:/usr/src/sys/arch/macppc/compile/GENERIC real mem = 402653184 (384MB) avail mem = 376979456 (359MB) mainbus0 at root: model PowerBook4,1 cpu0 at mainbus0: 750 (Revision 0x3311): 600 MHz: 256KB backside cache mem0 at mainbus0 spdmem0 at mem0: SDRAM non-parity PC66 spdmem1 at mem0: 256MB SDRAM non-parity PC100CL2 memc0 at mainbus0: uni-n kiic0 at memc0 offset 0xf8001000 iic0 at kiic0 mpcpcibr0 at mainbus0 pci: uni-north, Revision 0xff pci0 at mpcpcibr0 bus 0 pchb0 at pci0 dev 11 function 0 "Apple Pangea AGP" rev 0x00 vgafb0 at pci0 dev 16 function 0 "ATI Mobility M3" rev 0x02, mmio wsdisplay0 at vgafb0 mux 1: console (std, vt100 emulation) mpcpcibr1 at mainbus0 pci: uni-north, Revision 0x0 pci1 at mpcpcibr1 bus 0 pchb1 at pci1 dev 11 function 0 "Apple Pangea" rev 0x00 macobio0 at pci1 dev 23 function 0 "Apple Pangea Macio" rev 0x00 openpic0 at macobio0 offset 0x4: version 0x4614 little endian macgpio0 at macobio0 offset 0x50 macgpio1 at macgpio0 irq 47 pgs0 at macgpio0: irq 55 "firewire-linkon" at macgpio0 not configured "gpio1" at macgpio0 not configured "gpio9" at macgpio0 not configured "extint-gpio4" at macgpio0 not configured "extint-gpio12" at macgpio0 not configured "escc-legacy" at macobio0 offset 0x12000 not configured zsc0 at macobio0 offset 0x13000: irq 22,23 zstty0 at zsc0 channel 0 zstty1 at zsc0 channel 1 tumbler0 at macobio0 offset 0x1: irq 30,1,2 "timer" at macobio0 offset 0x15000 not configured adb0 at macobio0 offset 0x16000 irq 25: via-pmu, 3 targets akbd0 at adb0 addr 2: PowerBook G4 keyboard (Inverted T) wskbd0 at akbd0: console keyboard, using wsdisplay0 ams0 at adb0 addr 3: EMP trackpad 2-button, 400 dpi wsmouse0 at ams0 mux 0 abtn0 at adb0 addr 7: brightness/volume/eject buttons apm0 at adb0: battery flags 0x5, 7% charged "battery" at macobio0 offset 0x0 not configured "backlight" at macobio0 offset 0xf300 not configured kiic1 at macobio0 offset 0x18000 iic1 at kiic1 wdc0 at macobio0 offset 0x1f000 irq 19: DMA wd0 at wdc0 channel 0 drive 0: wd0: 16-sector PIO, LBA48, 38154MB, 78140160 sectors atapiscsi0 at wdc0 channel 0 drive 1 scsibus0 at atapiscsi0: 2 targets cd0 at scsibus0 targ 0 lun 0: ATAPI 5/cdrom removable wd0(wdc0:0:0): using PIO mode 4, DMA mode 2 cd0(wdc0:0:1): using PIO mode 4, DMA mode 2 wi0 at macobio0 offset 0x3 irq 57: wi0: Firmware 4.16 variant 1, address 00:10:c6:6a:93:64 audio0 at tumbler0 ohci0 at pci1 dev 24 function 0 "Apple Pangea USB" rev 0x00: irq 27, version 1.0 ohci1 at pci1 dev 25 function 0 "Apple Pangea USB" rev 0x00: irq 28, version 1.0 usb0 at ohci0: USB revision 1.0 uhub0 at usb0 "Apple OHCI root hub" rev 1.00/1.00 addr 1 usb1 at ohci1: USB revision 1.0 uhub1 at usb1 "Apple OHCI root hub" rev 1.00/1.00 addr 1 mpcpcibr2 at mainbus0 pci: uni-north, Revision 0x16 pci2 at mpcpcibr2 bus 0 pchb2 at pci2 dev 11 function 0 "Apple Pangea PCI" rev 0x00 "Apple Pangea FireWire" rev 0x00 at pci2 dev 14 function 0 not configured gem0 at pci2 dev 15 function 0 "Apple Pangea GMAC" rev 0x00: irq 41, address 00:03:93:62:98:f8 bmtphy0 at gem0 phy 0: BCM5221 100baseTX PHY, rev. 4 vscsi0 at root scsibus1 at vscsi0: 256 targets softraid0 at root bootpath: /pci@f200/mac-io@17/ata-4@1f000/disk@0:/bsd root on wd0a swap on wd0b dump on wd0b > Index: dev/adb.c > === > RCS file: /cvs/src/sys/arch/macppc/dev/adb.c,v > retrieving revision 1.29 > diff -u -p -r1.29 adb.c > --- dev/adb.c 1 Feb 2009 17:04:26 - 1.29 > +++ dev/adb.c 3 May 2011 02:27:28 - > @@ -1307,7 +1307,6 @@ adb_setup_hw_type(void) > > case ADB_HW_PMU: > adbSoftPower = 1; > - pm_setup_adb(); > return; > > default: > Index: dev/pm_direct.c > === > RCS file: /cvs/src/sys/arch/macppc/dev/pm_direct.c,v > retrieving revision 1.22 > diff -u -p -r1.22 pm_direct.c > --- dev/pm_direct.c 18 Feb 2007 19:33:48 - 1.22 > +++ dev/pm_direct.c 3 May 2011 02:27:28 - > @@ -54,10 +54,6 @@ > /* hardware dependent values */ >
Re: man.conf, pick up ports manpages by default
On Mon, Apr 11, 2011 at 09:19:57AM +0100, Stuart Henderson wrote: > it's useful for ports developers to be able to read the infrastructure > manpages (dpb, pkg_subst, update-patches, etc) without making changes > to the default configuration. > > as with X11R6, this fails cleanly if the relevant directories are not > present. > > ok? Certainly OK with me, this would be one less local modification for me. Please get another OK too though. > Index: man.conf > === > RCS file: /cvs/src/etc/man.conf,v > retrieving revision 1.16 > diff -u -p -r1.16 man.conf > --- man.conf 19 Oct 2010 20:05:52 - 1.16 > +++ man.conf 11 Apr 2011 08:04:16 - > @@ -31,7 +31,7 @@ _build .tbl.gz /usr/bin/gzcat %s | /us > # directory with all of the subdirectories listed for the keyword _subdir. > > # default > -_default /usr/{share,X11R6,local}/man/ > +_default /usr/{share,X11R6,local,ports/infrastructure}/man/ > > # Other sections that represent complete man subdirectories. > X11 /usr/X11R6/man/ > -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: pmap prefer diff
On Tue, Apr 05, 2011 at 06:42:47PM +0200, Ariane van der Steldt wrote: > Hi, > > So it turns out that my allocator is not capable of handling the pmap_prefer > horror. This diff exports the actual parameters of pmap_prefer, so I can > make the allocator deal with this intelligently. > > I need compile tests on: > - arm > - hppa > - hppa64 > - m68k > - mips64 > - sh > - sparc > - sparc64 > Since the code is not actually called, it should not affect running of > kernels. > > Ok? > -- > Ariane Compiles fine on sh with a small tweak of using vaddr_t pmap_prefer_align(void); instead of vaddr_t pmap_prefer_align(); > Index: arch//arm/include/pmap.h > === > RCS file: /cvs/src/sys/arch/arm/include/pmap.h,v > retrieving revision 1.17 > diff -u -d -p -r1.17 pmap.h > --- arch//arm/include/pmap.h 23 Mar 2011 16:54:34 - 1.17 > +++ arch//arm/include/pmap.h 5 Apr 2011 16:30:58 - > @@ -620,6 +620,14 @@ vaddr_t pmap_prefer(vaddr_t, vaddr_t); > > extern uint32_t pmap_alias_dist; > extern uint32_t pmap_alias_bits; > + > +/* pmap prefer alias alignment. */ > +#define PMAP_PREFER_ALIGN() (pmap_alias_dist) > +/* pmap prefer offset withing alignment. */ > +#define PMAP_PREFER_OFFSET(of) > \ > +(PMAP_PREFER_ALIGN() == 0 ? 0 : ((of) & (PMAP_PREFER_ALIGN() - 1))) > + > + > #endif /* _LOCORE */ > > #endif /* _KERNEL */ > Index: arch//hppa/include/pmap.h > === > RCS file: /cvs/src/sys/arch/hppa/include/pmap.h,v > retrieving revision 1.40 > diff -u -d -p -r1.40 pmap.h > --- arch//hppa/include/pmap.h 26 Dec 2010 15:40:59 - 1.40 > +++ arch//hppa/include/pmap.h 5 Apr 2011 16:30:59 - > @@ -101,6 +101,11 @@ pmap_prefer(vaddr_t offs, vaddr_t hint) > return pmap_prefer_hint; > } > > +/* pmap prefer alignment */ > +#define PMAP_PREFER_ALIGN() (HPPA_PGALIAS) > +/* pmap prefer offset within alignment */ > +#define PMAP_PREFER_OFFSET(of) ((of) & HPPA_PGAOFF) > + > #define pmap_sid2pid(s) (((s) + 1) << 1) > #define pmap_kernel()(&kernel_pmap_store) > #define pmap_resident_count(pmap) > ((pmap)->pm_stats.resident_count) > Index: arch//hppa64/include/pmap.h > === > RCS file: /cvs/src/sys/arch/hppa64/include/pmap.h,v > retrieving revision 1.4 > diff -u -d -p -r1.4 pmap.h > --- arch//hppa64/include/pmap.h 26 Dec 2010 15:40:59 - 1.4 > +++ arch//hppa64/include/pmap.h 5 Apr 2011 16:30:59 - > @@ -68,6 +68,11 @@ pmap_prefer(vaddr_t offs, vaddr_t hint) > return pmap_prefer_hint; > } > > +/* pmap prefer alignment */ > +#define PMAP_PREFER_ALIGN() (HPPA_PGALIAS) > +/* pmap prefer offset within alignment */ > +#define PMAP_PREFER_OFFSET(of) ((of) & HPPA_PGAOFF) > + > #define PMAP_GROWKERNEL > #define PMAP_STEAL_MEMORY > > Index: arch//m68k/include/pmap_motorola.h > === > RCS file: /cvs/src/sys/arch/m68k/include/pmap_motorola.h,v > retrieving revision 1.22 > diff -u -d -p -r1.22 pmap_motorola.h > --- arch//m68k/include/pmap_motorola.h23 Mar 2011 16:54:35 - > 1.22 > +++ arch//m68k/include/pmap_motorola.h5 Apr 2011 16:30:59 - > @@ -139,6 +139,12 @@ void pmap_kenter_cache(vaddr_t, paddr_t, > #ifdef M68K_MMU_HP > vaddr_t pmap_prefer(vaddr_t, vaddr_t); > #define PMAP_PREFER(foff, va) pmap_prefer((foff), (va)) > + > +extern int pmap_aliasmask; /* separation at which VA aliasing is ok */ > +/* pmap prefer alignment */ > +#define PMAP_PREFER_ALIGN() (pmap_aliasmask ? pmap_aliasmask + 1 : 0) > +/* pmap prefer offset */ > +#define PMAP_PREFER_OFFSET(of) ((of) & pmap_aliasmask) > #endif > > #endif /* _KERNEL */ > Index: arch//m68k/m68k/pmap_motorola.c > === > RCS file: /cvs/src/sys/arch/m68k/m68k/pmap_motorola.c,v > retrieving revision 1.59 > diff -u -d -p -r1.59 pmap_motorola.c > --- arch//m68k/m68k/pmap_motorola.c 6 Dec 2010 20:57:16 - 1.59 > +++ arch//m68k/m68k/pmap_motorola.c 5 Apr 2011 16:30:59 - > @@ -276,9 +276,6 @@ vaddr_t virtual_end;/* VA of last avai > TAILQ_HEAD(pv_page_list, pv_page) pv_page_freelist; > int pv_nfree; > > -#if defined(M68K_MMU_HP) > -extern int pmap_aliasmask; /* separation at which VA aliasing is ok */ > -#endif > #if defined(M68040) || defined(M68060) > int protostfree;/* prototype (default) free ST map */ > #endif > Index: arch//mips64/include/pmap.h > === > RCS file: /cvs/src/sys/arch/mips64/include/pmap.h,v > retrieving revision 1.25 > diff -u -d -p -r1.25 pmap.h > --- arch//mips64/include/pmap.h
Re: azalia(4) resume diff
On Mon, Feb 28, 2011 at 08:56:57PM -0500, Brad wrote: > On Mon, Feb 28, 2011 at 11:16:49PM +, Jacob Meuser wrote: > > some ATI azalia controllers are brojen after resume, as in PR 6550. > > the following diff gathers most of the pci conf register manipulation > > done in azalia_pci_attach() into a new function, azalia_configure_pci(), > > and calls that function in azalia_pci_attach() and azalia_resume(). > > > > this fixes one reported case of post-resume brokenness and doesn't > > cause any problems on other machines I've tested on, including an > > ATI device that was working. waiting to hear back about the PR and > > other reports, but wanted to get this out for testing asap. > > > > please test. thanks. > > This doesn't change anything about the symptom mentioned in the PR > and its still broken after resume. FWIW it does fix suspend for me on my desktop. Without this diff everything comes back properly, except for audio which sounds like stuttering static. With this diff my desktop behaves like my laptop when it comes to audio, just works. > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. > -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: YP=no in mk.conf and ypldap
On Wed, Feb 09, 2011 at 02:48:54PM -0500, Ted Unangst wrote: > On Wed, Feb 9, 2011 at 3:00 AM, Dinar Talypov wrote: > > While building system with YP=no set in mk.conf > > I have found a bug: ypldap depends on yp in libc. > > Thanks, I should be able to commit this later tonight. I committed it some hours ago already. -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
Re: recieve -> receive (sys/)
The pxe.h defines are unused elsewhere, btw. On Thu, Jan 20, 2011 at 11:35:34PM +0100, Jasper Lievisse Adriaanse wrote: > Hi, > > Obvious typo, though the pxe.h parts may have to wait untill after the lock? > Otherwise OK? > > -- > Cheers, > Jasper > > "Capable, generous men do not create victims, they nurture them." > > Index: arch/i386/stand/libsa/pxe.h > === > RCS file: /cvs/src/sys/arch/i386/stand/libsa/pxe.h,v > retrieving revision 1.5 > diff -p -u -r1.5 pxe.h > --- arch/i386/stand/libsa/pxe.h 20 Nov 2010 20:11:19 - 1.5 > +++ arch/i386/stand/libsa/pxe.h 20 Jan 2011 22:30:49 - > @@ -330,7 +330,7 @@ typedef struct { > PXENV_STATUS_t Status; > uint16_tFuncFlag; /* PXENV_UNDI_ISR_OUT_xxx */ > uint16_tBufferLength; /* Length of Frame */ > - uint16_tFrameLength;/* Total length of reciever > + uint16_tFrameLength;/* Total length of receiver > frame */ > uint16_tFrameHeaderLength; /* Length of the media header > in Frame */ > @@ -351,7 +351,7 @@ typedef struct { >*/ > #define PXENV_UNDI_ISR_OUT_DONE 0 > #define PXENV_UNDI_ISR_OUT_TRANSMIT 2 > -#define PXENV_UNDI_ISR_OUT_RECIEVE 3 > +#define PXENV_UNDI_ISR_OUT_RECEIVE 3 > #define PXENV_UNDI_ISR_OUT_BUSY 4 > } __packed t_PXENV_UNDI_ISR; > > Index: arch/amd64/stand/libsa/pxe.h > === > RCS file: /cvs/src/sys/arch/amd64/stand/libsa/pxe.h,v > retrieving revision 1.5 > diff -p -u -r1.5 pxe.h > --- arch/amd64/stand/libsa/pxe.h 20 Nov 2010 20:11:19 - 1.5 > +++ arch/amd64/stand/libsa/pxe.h 20 Jan 2011 22:30:49 - > @@ -330,7 +330,7 @@ typedef struct { > PXENV_STATUS_t Status; > uint16_tFuncFlag; /* PXENV_UNDI_ISR_OUT_xxx */ > uint16_tBufferLength; /* Length of Frame */ > - uint16_tFrameLength;/* Total length of reciever > + uint16_tFrameLength;/* Total length of receiver > frame */ > uint16_tFrameHeaderLength; /* Length of the media header > in Frame */ > @@ -351,7 +351,7 @@ typedef struct { >*/ > #define PXENV_UNDI_ISR_OUT_DONE 0 > #define PXENV_UNDI_ISR_OUT_TRANSMIT 2 > -#define PXENV_UNDI_ISR_OUT_RECIEVE 3 > +#define PXENV_UNDI_ISR_OUT_RECEIVE 3 > #define PXENV_UNDI_ISR_OUT_BUSY 4 > } __packed t_PXENV_UNDI_ISR; > > Index: dev/pci/drm/drmP.h > === > RCS file: /cvs/src/sys/dev/pci/drm/drmP.h,v > retrieving revision 1.126 > diff -p -u -r1.126 drmP.h > --- dev/pci/drm/drmP.h18 Jul 2010 21:01:06 - 1.126 > +++ dev/pci/drm/drmP.h20 Jan 2011 22:30:49 - > @@ -324,7 +324,7 @@ struct drm_vblank_info { > u_int32_tvb_max;/* counter reg size */ > struct drm_vblank { > struct drmevlist vbl_events;/* vblank events */ > - u_int32_tvbl_last; /* Last recieved */ > + u_int32_tvbl_last; /* Last received */ > u_int32_tvbl_count; /* interrupt no. */ > int vbl_refs; /* Number of users */ > int vbl_enabled; /* Enabled? */ > Index: dev/usb/utwitch.c > === > RCS file: /cvs/src/sys/dev/usb/utwitch.c,v > retrieving revision 1.2 > diff -p -u -r1.2 utwitch.c > --- dev/usb/utwitch.c 19 Dec 2010 21:32:58 - 1.2 > +++ dev/usb/utwitch.c 20 Jan 2011 22:30:49 - > @@ -250,7 +250,7 @@ utwitch_intr(struct uhidev *addr, void * > switch (buf[0]) { > case CMD_ACK: > if (buf[1] == sc->issueing_cmd) { > - DPRINTF(("ack recieved for cmd 0x%.2x\n", buf[1])); > + DPRINTF(("ack received for cmd 0x%.2x\n", buf[1])); > sc->accepted_cmd = buf[1]; > } else { > DPRINTF(("cmd-ack mismatch: recved 0x%.2x, expect > 0x%.2x\n", > -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."
recieve -> receive (usr.sbin)
OK? -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them." Index: npppd/l2tp/l2tp_call.c === RCS file: /cvs/src/usr.sbin/npppd/l2tp/l2tp_call.c,v retrieving revision 1.6 diff -p -u -r1.6 l2tp_call.c --- npppd/l2tp/l2tp_call.c 24 Sep 2010 14:50:30 - 1.6 +++ npppd/l2tp/l2tp_call.c 20 Jan 2011 22:34:37 - @@ -155,7 +155,7 @@ l2tp_call_disconnect(l2tp_call *_this, i * control packet */ -/* call it when control packet is recieved */ +/* call it when control packet is received */ int l2tp_call_recv_packet(l2tp_ctrl *ctrl, l2tp_call *_this, int mestype, u_char *pkt, int pktlen) Index: npppd/l2tp/l2tp_ctrl.c === RCS file: /cvs/src/usr.sbin/npppd/l2tp/l2tp_ctrl.c,v retrieving revision 1.5 diff -p -u -r1.5 l2tp_ctrl.c --- npppd/l2tp/l2tp_ctrl.c 24 Sep 2010 14:50:30 - 1.5 +++ npppd/l2tp/l2tp_ctrl.c 20 Jan 2011 22:34:38 - @@ -535,7 +535,7 @@ l2tp_ctrl_timeout(int fd, short evtype, curr_time - _this->last_snd_ctrl >= L2TP_CTRL_WAIT_CALL_TIMEOUT) { if (_this->ncalls == 0) - /* fail to recieve first call */ + /* fail to receive first call */ l2tp_ctrl_log(_this, LOG_WARNING, "timeout waiting call"); l2tp_ctrl_stop(_this, @@ -706,7 +706,7 @@ l2tp_ctrl_reset_timeout(l2tp_ctrl *_this /* * protocols / send and receive */ -/* Recieve packet */ +/* Receive packet */ void l2tp_ctrl_input(l2tpd *_this, int listener_index, struct sockaddr *peer, struct sockaddr *sock, void *nat_t_ctx, u_char *pkt, int pktlen) @@ -1037,7 +1037,7 @@ l2tp_ctrl_input(l2tpd *_this, int listen /* * RFC specifies that sent of StopCCN in the state, * However as this implementation only support Passive -* open, this packet will not recieved. +* open, this packet will not received. */ /* FALLTHROUGH */ case L2TP_AVP_MESSAGE_TYPE_SCCCN: Index: npppd/npppd/eap.c === RCS file: /cvs/src/usr.sbin/npppd/npppd/eap.c,v retrieving revision 1.5 diff -p -u -r1.5 eap.c --- npppd/npppd/eap.c 22 Sep 2010 11:48:38 - 1.5 +++ npppd/npppd/eap.c 20 Jan 2011 22:34:38 - @@ -236,7 +236,7 @@ eap_input(eap *_this, unsigned char *pkt if (code == EAP_FAILURE) { /* discard */ eap_log(_this, LOG_NOTICE, - "Recieved unexpected packet from peer (code = %d)", code); + "Received unexpected packet from peer (code = %d)", code); return; } @@ -292,11 +292,11 @@ eap_input(eap *_this, unsigned char *pkt * discard */ eap_log(_this, LOG_DEBUG, - "recieve eap length = %d, " + "receive eap length = %d, " "eap info: code = %d, id = %d, length = %d, type = %d, " "name length = %d", len, code, id, length, type, _this->name_len ); -eap_log(_this, LOG_NOTICE, "Recieved unexpected eap packet from peer"); +eap_log(_this, LOG_NOTICE, "Received unexpected eap packet from peer"); return; } Index: npppd/pptp/pptp.h === RCS file: /cvs/src/usr.sbin/npppd/pptp/pptp.h,v retrieving revision 1.4 diff -p -u -r1.4 pptp.h --- npppd/pptp/pptp.h 2 Jul 2010 21:20:57 - 1.4 +++ npppd/pptp/pptp.h 20 Jan 2011 22:34:38 - @@ -300,7 +300,7 @@ typedef struct _pptp_call { pptp_ctrl *ctrl; /* parent */ unsignedid; - int ifidx; /* recieve interface index */ + int ifidx; /* receive interface index */ int state; @@ -310,8 +310,8 @@ typedef struct _pptp_call { uint32_tsnd_una;/* next ack notification */ uint32_tsnd_nxt;/* next transmit sequence # */ - uint32_trcv_nxt;/* recieved sequence # */ - uint32_trcv_acked; /* latest acked recieved sequence # */ + uint32_trcv_nxt;/* received sequence # */ + uint32_trcv_acked; /* latest acked received sequence # */ int winsz; /* current window size */ int maxwinsz; /* maximum window size */ Index: npppd/pptp/pptpd.c === RCS file: /cvs/src/usr.sbin/npppd/pptp/pptpd.c,v retrieving revision 1.7 diff -p -u -r1.7 pptpd.c --- npppd/pptp/pptpd.c 27 Sep 2010 00:12
recieve -> receive (sys/)
Hi, Obvious typo, though the pxe.h parts may have to wait untill after the lock? Otherwise OK? -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them." Index: arch/i386/stand/libsa/pxe.h === RCS file: /cvs/src/sys/arch/i386/stand/libsa/pxe.h,v retrieving revision 1.5 diff -p -u -r1.5 pxe.h --- arch/i386/stand/libsa/pxe.h 20 Nov 2010 20:11:19 - 1.5 +++ arch/i386/stand/libsa/pxe.h 20 Jan 2011 22:30:49 - @@ -330,7 +330,7 @@ typedef struct { PXENV_STATUS_t Status; uint16_tFuncFlag; /* PXENV_UNDI_ISR_OUT_xxx */ uint16_tBufferLength; /* Length of Frame */ - uint16_tFrameLength;/* Total length of reciever + uint16_tFrameLength;/* Total length of receiver frame */ uint16_tFrameHeaderLength; /* Length of the media header in Frame */ @@ -351,7 +351,7 @@ typedef struct { */ # define PXENV_UNDI_ISR_OUT_DONE 0 # define PXENV_UNDI_ISR_OUT_TRANSMIT 2 -# define PXENV_UNDI_ISR_OUT_RECIEVE 3 +# define PXENV_UNDI_ISR_OUT_RECEIVE 3 # define PXENV_UNDI_ISR_OUT_BUSY 4 } __packed t_PXENV_UNDI_ISR; Index: arch/amd64/stand/libsa/pxe.h === RCS file: /cvs/src/sys/arch/amd64/stand/libsa/pxe.h,v retrieving revision 1.5 diff -p -u -r1.5 pxe.h --- arch/amd64/stand/libsa/pxe.h20 Nov 2010 20:11:19 - 1.5 +++ arch/amd64/stand/libsa/pxe.h20 Jan 2011 22:30:49 - @@ -330,7 +330,7 @@ typedef struct { PXENV_STATUS_t Status; uint16_tFuncFlag; /* PXENV_UNDI_ISR_OUT_xxx */ uint16_tBufferLength; /* Length of Frame */ - uint16_tFrameLength;/* Total length of reciever + uint16_tFrameLength;/* Total length of receiver frame */ uint16_tFrameHeaderLength; /* Length of the media header in Frame */ @@ -351,7 +351,7 @@ typedef struct { */ # define PXENV_UNDI_ISR_OUT_DONE 0 # define PXENV_UNDI_ISR_OUT_TRANSMIT 2 -# define PXENV_UNDI_ISR_OUT_RECIEVE 3 +# define PXENV_UNDI_ISR_OUT_RECEIVE 3 # define PXENV_UNDI_ISR_OUT_BUSY 4 } __packed t_PXENV_UNDI_ISR; Index: dev/pci/drm/drmP.h === RCS file: /cvs/src/sys/dev/pci/drm/drmP.h,v retrieving revision 1.126 diff -p -u -r1.126 drmP.h --- dev/pci/drm/drmP.h 18 Jul 2010 21:01:06 - 1.126 +++ dev/pci/drm/drmP.h 20 Jan 2011 22:30:49 - @@ -324,7 +324,7 @@ struct drm_vblank_info { u_int32_tvb_max;/* counter reg size */ struct drm_vblank { struct drmevlist vbl_events;/* vblank events */ - u_int32_tvbl_last; /* Last recieved */ + u_int32_tvbl_last; /* Last received */ u_int32_tvbl_count; /* interrupt no. */ int vbl_refs; /* Number of users */ int vbl_enabled; /* Enabled? */ Index: dev/usb/utwitch.c === RCS file: /cvs/src/sys/dev/usb/utwitch.c,v retrieving revision 1.2 diff -p -u -r1.2 utwitch.c --- dev/usb/utwitch.c 19 Dec 2010 21:32:58 - 1.2 +++ dev/usb/utwitch.c 20 Jan 2011 22:30:49 - @@ -250,7 +250,7 @@ utwitch_intr(struct uhidev *addr, void * switch (buf[0]) { case CMD_ACK: if (buf[1] == sc->issueing_cmd) { - DPRINTF(("ack recieved for cmd 0x%.2x\n", buf[1])); + DPRINTF(("ack received for cmd 0x%.2x\n", buf[1])); sc->accepted_cmd = buf[1]; } else { DPRINTF(("cmd-ack mismatch: recved 0x%.2x, expect 0x%.2x\n",
zap some dead code from bdes(1)
As per subject, since #define something test for in the very next line, makes it clear the other code can go. No binary change of course. OK? -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them." Index: bdes.c === RCS file: /cvs/src/usr.bin/bdes/bdes.c,v retrieving revision 1.16 diff -p -u -r1.16 bdes.c --- bdes.c 27 Oct 2009 23:59:36 - 1.16 +++ bdes.c 20 Jan 2011 18:22:08 - @@ -102,31 +102,12 @@ void usage(void); #defineMEMZERO(dest,len) bzero((dest),(len)) /* Hide the calls to the primitive encryption routines. */ -#defineFASTWAY -#ifdef FASTWAY #defineDES_KEY(buf) \ if (des_setkey(buf)) \ err(1, "des_setkey"); #defineDES_XFORM(buf) \ if (des_cipher(buf, buf, 0L, (inverse ? -1 : 1))) \ err(1, "des_cipher"); -#else -#defineDES_KEY(buf){ \ - char bits1[64]; /* bits of key */ \ - expand(buf, bits1); \ - if (setkey(bits1)) \ - err(1, "setkey"); \ - } -#defineDES_XFORM(buf) { \ - char bits1[64]; /* bits of message */ \ - expand(buf, bits1); \ - if (encrypt(bits1, inverse))\ - err(1, "encrypt"); \ - compress(bits1, buf); \ - } -void expand(Desbuf, char *); -void compress(Desbuf, char *); -#endif /* * this does an error-checking write @@ -1009,36 +990,6 @@ cfbauth(void) (void)putchar(CHAR(msgbuf, 0)); } } - -#ifndef FASTWAY -/* - * change from 8 bits/Uchar to 1 bit/Uchar - */ -void -expand(Desbuf from, char *to) -{ - int i, j; /* counters in for loop */ - - for (i = 0; i < 8; i++) - for (j = 0; j < 8; j++) - *to++ = (CHAR(from, i)>>(7-j))&01; -} - -/* - * change from 1 bit/char to 8 bits/Uchar - */ -void -compress(char *from, Desbuf to) -{ - int i, j; /* counters in for loop */ - - for (i = 0; i < 8; i++) { - CHAR(to, i) = 0; - for (j = 0; j < 8; j++) - CHAR(to, i) = ((*from++)<<(7-j))|CHAR(to, i); - } -} -#endif extern char *__progname; /*
Re: Workaround for data corruption issue with ALI M5229 IDE chip used with Sun Blade 100/Netra X1.
On Thu, Jan 13, 2011 at 09:02:26AM +0100, Jasper Lievisse Adriaanse wrote: > On Wed, Jan 12, 2011 at 08:32:12PM -0500, Brad wrote: > > The following diff is ported from NetBSD (the workaround originated from > > OpenSolaris) to workaround the issue of data corruption with the ALI M5229 > > IDE chipset when using UltraDMA. Same workaround is also used by > > FreeBSD/Linux. > > This chipset is found in some sparc64 systems such as the Blade 100 and > > Netra X1. > As well as Blade 1500, Fire T200, Fire v120 and Fire v210.. > > > I don't have any such systems but I went digging for this being curious > > why the nasty hack was added to the kernel configs to disable UltraDMA > > to workaround this bug and thus penalizing other IDE/SATA controllers > > that could be in the same system. If you have one of the mentioned > > systems please test this. Fwiw, my X1 is still working fine. > > Index: dev/pci/pciide.c > > === > > RCS file: /home/cvs/src/sys/dev/pci/pciide.c,v > > retrieving revision 1.323 > > diff -u -p -r1.323 pciide.c > > --- dev/pci/pciide.c18 Nov 2010 18:12:52 - 1.323 > > +++ dev/pci/pciide.c13 Jan 2011 00:22:14 - > > @@ -212,6 +212,8 @@ void natsemi_irqack(struct channel_softc > > void ns_scx200_chip_map(struct pciide_softc *, struct pci_attach_args *); > > void ns_scx200_setup_channel(struct channel_softc *); > > > > +int acer_pcib_match(struct pci_attach_args *); > > +void acer_do_reset(struct channel_softc *); > > void acer_chip_map(struct pciide_softc *, struct pci_attach_args *); > > void acer_setup_channel(struct channel_softc *); > > int acer_pci_intr(void *); > > @@ -289,6 +291,11 @@ struct pciide_product_desc { > > void (*chip_map)(struct pciide_softc *, struct pci_attach_args *); > > }; > > > > +struct pciide_acer_softc { > > + struct pciide_softc pciide_sc; > > + struct pci_attach_args pcib_pa; > > +}; > > + > > /* Flags for ide_flags */ > > #define IDE_PCI_CLASS_OVERRIDE 0x0001 /* accept even if class != > > pciide */ > > #define IDE_16BIT_IOSPACE 0x0002 /* I/O space BARS ignore upper word */ > > @@ -5619,10 +5626,27 @@ ns_scx200_setup_channel(struct channel_s > > pciide_print_modes(cp); > > } > > > > +int > > +acer_pcib_match(struct pci_attach_args *pa) > > +{ > > + /* > > +* We need to access the PCI config space of the pcib, see > > +* acer_do_reset(). > > +*/ > > + if (PCI_CLASS(pa->pa_class) == PCI_CLASS_BRIDGE && > > + PCI_SUBCLASS(pa->pa_class) == PCI_SUBCLASS_BRIDGE_ISA && > > + PCI_VENDOR(pa->pa_id) == PCI_VENDOR_ALI && > > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_ALI_M1533) > > + return (1); > > + > > + return (0); > > +} > > + > > void > > acer_chip_map(struct pciide_softc *sc, struct pci_attach_args *pa) > > { > > struct pciide_channel *cp; > > + struct pciide_acer_softc *acer_sc = (struct pciide_acer_softc *)sc; > > int channel; > > pcireg_t cr, interface; > > bus_size_t cmdsize, ctlsize; > > @@ -5684,6 +5708,12 @@ acer_chip_map(struct pciide_softc *sc, s > > pciide_pci_read(sc->sc_pc, sc->sc_tag, ACER_0x4B) > > | ACER_0x4B_CDETECT); > > > > + if (rev == 0xC3) { > > + /* Install reset bug workaround */ > > + if (pci_find_device(&acer_sc->pcib_pa, acer_pcib_match)) > > + sc->sc_wdcdev.reset = acer_do_reset; > > + } > > + > > for (channel = 0; channel < sc->sc_wdcdev.nchannels; channel++) { > > cp = &sc->pciide_channels[channel]; > > if (pciide_chansetup(sc, channel, interface) == 0) > > @@ -5713,6 +5743,31 @@ acer_chip_map(struct pciide_softc *sc, s > > } > > acer_setup_channel(&cp->wdc_channel); > > } > > +} > > + > > +void > > +acer_do_reset(struct channel_softc *chp) > > +{ > > + struct pciide_channel *cp = (struct pciide_channel *)chp; > > + struct pciide_softc *sc = (struct pciide_softc *)cp->wdc_channel.wdc; > > + struct pciide_acer_softc *acer_sc = (struct pciide_acer_softc *)sc; > > + u_int8_t reg; > > + > > + /* > > +* From OpenSolaris: after a reset we need to disable/enable the > > +* corresponding channel, or data corruption will occur in > > +*
Re: Workaround for data corruption issue with ALI M5229 IDE chip used with Sun Blade 100/Netra X1.
On Wed, Jan 12, 2011 at 08:32:12PM -0500, Brad wrote: > The following diff is ported from NetBSD (the workaround originated from > OpenSolaris) to workaround the issue of data corruption with the ALI M5229 > IDE chipset when using UltraDMA. Same workaround is also used by > FreeBSD/Linux. > This chipset is found in some sparc64 systems such as the Blade 100 and > Netra X1. As well as Blade 1500, Fire T200, Fire v120 and Fire v210.. > I don't have any such systems but I went digging for this being curious > why the nasty hack was added to the kernel configs to disable UltraDMA > to workaround this bug and thus penalizing other IDE/SATA controllers > that could be in the same system. If you have one of the mentioned > systems please test this. > > > Index: dev/pci/pciide.c > === > RCS file: /home/cvs/src/sys/dev/pci/pciide.c,v > retrieving revision 1.323 > diff -u -p -r1.323 pciide.c > --- dev/pci/pciide.c 18 Nov 2010 18:12:52 - 1.323 > +++ dev/pci/pciide.c 13 Jan 2011 00:22:14 - > @@ -212,6 +212,8 @@ void natsemi_irqack(struct channel_softc > void ns_scx200_chip_map(struct pciide_softc *, struct pci_attach_args *); > void ns_scx200_setup_channel(struct channel_softc *); > > +int acer_pcib_match(struct pci_attach_args *); > +void acer_do_reset(struct channel_softc *); > void acer_chip_map(struct pciide_softc *, struct pci_attach_args *); > void acer_setup_channel(struct channel_softc *); > int acer_pci_intr(void *); > @@ -289,6 +291,11 @@ struct pciide_product_desc { > void (*chip_map)(struct pciide_softc *, struct pci_attach_args *); > }; > > +struct pciide_acer_softc { > + struct pciide_softc pciide_sc; > + struct pci_attach_args pcib_pa; > +}; > + > /* Flags for ide_flags */ > #define IDE_PCI_CLASS_OVERRIDE 0x0001 /* accept even if class != > pciide */ > #define IDE_16BIT_IOSPACE0x0002 /* I/O space BARS ignore upper word */ > @@ -5619,10 +5626,27 @@ ns_scx200_setup_channel(struct channel_s > pciide_print_modes(cp); > } > > +int > +acer_pcib_match(struct pci_attach_args *pa) > +{ > + /* > + * We need to access the PCI config space of the pcib, see > + * acer_do_reset(). > + */ > + if (PCI_CLASS(pa->pa_class) == PCI_CLASS_BRIDGE && > + PCI_SUBCLASS(pa->pa_class) == PCI_SUBCLASS_BRIDGE_ISA && > + PCI_VENDOR(pa->pa_id) == PCI_VENDOR_ALI && > + PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_ALI_M1533) > + return (1); > + > + return (0); > +} > + > void > acer_chip_map(struct pciide_softc *sc, struct pci_attach_args *pa) > { > struct pciide_channel *cp; > + struct pciide_acer_softc *acer_sc = (struct pciide_acer_softc *)sc; > int channel; > pcireg_t cr, interface; > bus_size_t cmdsize, ctlsize; > @@ -5684,6 +5708,12 @@ acer_chip_map(struct pciide_softc *sc, s > pciide_pci_read(sc->sc_pc, sc->sc_tag, ACER_0x4B) > | ACER_0x4B_CDETECT); > > + if (rev == 0xC3) { > + /* Install reset bug workaround */ > + if (pci_find_device(&acer_sc->pcib_pa, acer_pcib_match)) > + sc->sc_wdcdev.reset = acer_do_reset; > + } > + > for (channel = 0; channel < sc->sc_wdcdev.nchannels; channel++) { > cp = &sc->pciide_channels[channel]; > if (pciide_chansetup(sc, channel, interface) == 0) > @@ -5713,6 +5743,31 @@ acer_chip_map(struct pciide_softc *sc, s > } > acer_setup_channel(&cp->wdc_channel); > } > +} > + > +void > +acer_do_reset(struct channel_softc *chp) > +{ > + struct pciide_channel *cp = (struct pciide_channel *)chp; > + struct pciide_softc *sc = (struct pciide_softc *)cp->wdc_channel.wdc; > + struct pciide_acer_softc *acer_sc = (struct pciide_acer_softc *)sc; > + u_int8_t reg; > + > + /* > + * From OpenSolaris: after a reset we need to disable/enable the > + * corresponding channel, or data corruption will occur in > + * UltraDMA modes. > + */ > + > + wdc_do_reset(chp); > + > + reg = pciide_pci_read(acer_sc->pcib_pa.pa_pc, acer_sc->pcib_pa.pa_tag, > + ACER_PCIB_CTRL); > + pciide_pci_write(acer_sc->pcib_pa.pa_pc, acer_sc->pcib_pa.pa_tag, > + ACER_PCIB_CTRL, reg & ~ACER_PCIB_CTRL_ENCHAN(chp->channel)); > + delay(1000); > + pciide_pci_write(acer_sc->pcib_pa.pa_pc, acer_sc->pcib_pa.pa_tag, > + ACER_PCIB_CTRL, reg); > } > > void > Index: dev/pci/pciide_acer_reg.h > === > RCS file: /home/cvs/src/sys/dev/pci/pciide_acer_reg.h,v > retrieving revision 1.8 > diff -u -p -r1.8 pciide_acer_reg.h > --- dev/pci/pciide_acer_reg.h 23 Jul 2010 07:47:13 - 1.8 > +++ dev/pci/pciide_acer_reg.h 12 Jan 2011 05:14:26 - > @@ -89,6 +89,10 @@ > #define ACER_0x79_REVC2_EN 0x4 > #define ACER_0x79_EN 0x2 > > +/* O
config -b needs -s (and visa versa)?
Right now, config doesn't work when either -b or -s is specified. It does work when both or none are specified. Does anyone know what the correct behaviour should be? Here is a diff that would at least make this behaviour explicit (if correct, OK?). -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them." Index: config.8 === RCS file: /cvs/src/usr.sbin/config/config.8,v retrieving revision 1.54 diff -p -u -r1.54 config.8 --- config.810 Dec 2009 22:07:19 - 1.54 +++ config.85 Jan 2011 13:33:28 - @@ -39,8 +39,7 @@ .Sh SYNOPSIS .Nm config .Op Fl p -.Op Fl b Ar builddir -.Op Fl s Ar srcdir +.Op Fl b Ar builddir Fl s Ar srcdir .Op Ar config-file .Nm config .Op Fl u Index: main.c === RCS file: /cvs/src/usr.sbin/config/main.c,v retrieving revision 1.41 diff -p -u -r1.41 main.c --- main.c 27 Oct 2009 23:59:51 - 1.41 +++ main.c 5 Jan 2011 13:33:29 - @@ -84,7 +84,7 @@ usage(void) extern char *__progname; fprintf(stderr, - "usage: %s [-p] [-b builddir] [-s srcdir] [config-file]\n" + "usage: %s [-p] [-b builddir -s srcdir] [config-file]\n" " %s [-u] [-f | -o outfile] -e infile\n", __progname, __progname); @@ -162,6 +162,12 @@ main(int argc, char *argv[]) argv += optind; if (argc > 1 || (eflag && argv[0] == NULL)) usage(); + + if ((builddir && !srcdir) || (!builddir && srcdir)) { + fprintf(stderr, "config: both -b (builddir) and -s (sourcedir)"); + fprintf(stderr, " need to be specified\n"); + usage(); + } if (eflag) { #ifdef MAKE_BOOTSTRAP
Consistent 'include' rules in 'files.' files.
As per subject, tested on amd64/macppc. OK? -- Cheers, Jasper "During times of universal deceit, telling the truth becomes a revolutionary act." Index: alpha/conf/files.alpha === RCS file: /cvs/src/sys/arch/alpha/conf/files.alpha,v retrieving revision 1.90 diff -p -u -r1.90 files.alpha --- alpha/conf/files.alpha 30 Jun 2010 20:38:49 - 1.90 +++ alpha/conf/files.alpha 6 Dec 2010 18:53:05 - @@ -35,7 +35,7 @@ major {vnd = 9} # # Media Independent Interface (mii) # -include"../../../dev/mii/files.mii" +include"dev/mii/files.mii" # # Machine-independent SCSI drivers @@ -269,7 +269,7 @@ filedev/pci/if_hme_pci.chme_pci # ISA PnP # -include"../../../dev/isa/files.isapnp" +include"dev/isa/files.isapnp" file arch/alpha/isa/isapnp_machdep.c isapnp # Index: amd64/conf/files.amd64 === RCS file: /cvs/src/sys/arch/amd64/conf/files.amd64,v retrieving revision 1.59 diff -p -u -r1.59 files.amd64 --- amd64/conf/files.amd64 13 Nov 2010 04:16:42 - 1.59 +++ amd64/conf/files.amd64 6 Dec 2010 18:53:06 - @@ -225,7 +225,7 @@ include "dev/gpio/files.gpio" # # ACPI # -include "../../../dev/acpi/files.acpi" +include "dev/acpi/files.acpi" file arch/amd64/amd64/acpi_machdep.c acpi file arch/amd64/amd64/acpi_wakecode.Sacpi & !small_kernel Index: armish/conf/files.armish === RCS file: /cvs/src/sys/arch/armish/conf/files.armish,v retrieving revision 1.13 diff -p -u -r1.13 files.armish --- armish/conf/files.armish16 May 2009 05:47:25 - 1.13 +++ armish/conf/files.armish6 Dec 2010 18:53:07 - @@ -14,7 +14,7 @@ file arch/armish/armish/armish_machdep.c file arch/armish/armish/autoconf.c file arch/arm/arm/disksubr.c disk -include "../../../scsi/files.scsi" +include "scsi/files.scsi" # Use the generic ARM soft interrupt code. file arch/arm/arm/softintr.c @@ -67,11 +67,11 @@ include "dev/bluetooth/files.bluetooth" include "dev/mii/files.mii" # PCI -include "../../../dev/pci/files.pci" +include "dev/pci/files.pci" file arch/armish/dev/pciide_machdep.cpciide -include "../../../dev/puc/files.puc" -include "../../../dev/atapiscsi/files.atapiscsi" +include "dev/puc/files.puc" +include "dev/atapiscsi/files.atapiscsi" # Index: aviion/conf/files.aviion === RCS file: /cvs/src/sys/arch/aviion/conf/files.aviion,v retrieving revision 1.7 diff -p -u -r1.7 files.aviion --- aviion/conf/files.aviion21 Apr 2010 19:33:47 - 1.7 +++ aviion/conf/files.aviion6 Dec 2010 18:53:07 - @@ -35,7 +35,7 @@ file arch/aviion/dev/if_ile_syscon.c i attach oosiop at syscon with oosiop_syscon file arch/aviion/dev/oosiop_syscon.c oosiop_syscon -include"../../../scsi/files.scsi" +include "scsi/files.scsi" major {sd = 4} major {st = 5} Index: beagle/conf/files.beagle === RCS file: /cvs/src/sys/arch/beagle/conf/files.beagle,v retrieving revision 1.4 diff -p -u -r1.4 files.beagle --- beagle/conf/files.beagle1 Jun 2010 03:01:02 - 1.4 +++ beagle/conf/files.beagle6 Dec 2010 18:53:07 - @@ -28,7 +28,7 @@ file arch/arm/armv7/armv7_mutex.c # note that the order of the devices in _this_ file # affects the order that the devices will configure. -include "../../../dev/sdmmc/files.sdmmc" +include "dev/sdmmc/files.sdmmc" device prcm attach prcm at ahb @@ -77,8 +77,8 @@ file arch/beagle/dev/omdisplay.c omdisp # # Machine-independent SCSI drivers # -include "../../../scsi/files.scsi" -include "../../../dev/atapiscsi/files.atapiscsi" +include "scsi/files.scsi" +include "dev/atapiscsi/files.atapiscsi" # CPU support and integrated peripherals file arch/arm/arm/irq_dispatch.S Index: gumstix/conf/files.gumstix === RCS file: /cvs/src/sys/arch/gumstix/conf/files.gumstix,v retrieving revision 1.1 diff -p -u -r1.1 files.gumstix --- gumstix/conf/files.gumstix 26 Nov 2008 14:18:11 - 1.1 +++ gumstix/conf/files.gumstix 6 Dec 2010 18:53:07 - @@ -18,8 +18,8 @@ file arch/gumstix/gumstix/gumstix_machde # # Machine-independent SCSI drivers # -include "../../../scsi/files.scsi" -include "../../../dev/atapiscsi/files.atapiscsi" +include "scsi/files.scsi" +include "dev/atapiscsi/files.atapiscsi" # CPU support and integrated peripherals include "arch/arm/xscale/files.pxa2x0" Index: i386/conf/files.i386 === RCS file: /cvs/src/sys/arch/i386/conf/files.i386,v retrieving revision 1.199 diff -p -u -r1.199 files.
drops NENTS in favor of nitems
This diff drops another nitems() copy we have in tree, NENTS(). Compile tested on amd64, no binary change. OK? -- Cheers, Jasper "During times of universal deceit, telling the truth becomes a revolutionary act." Index: arch/alpha/stand/netboot/if_prom.c === RCS file: /cvs/src/sys/arch/alpha/stand/netboot/if_prom.c,v retrieving revision 1.4 diff -p -u -r1.4 if_prom.c --- arch/alpha/stand/netboot/if_prom.c 9 Mar 2008 12:03:03 - 1.4 +++ arch/alpha/stand/netboot/if_prom.c 6 Dec 2010 18:00:02 - @@ -61,7 +61,7 @@ struct netif_dif prom_ifs[] = { { 0, 1, &prom_stats[0], 0, }, }; -struct netif_stats prom_stats[NENTS(prom_ifs)]; +struct netif_stats prom_stats[nitems(prom_ifs)]; struct netbbinfo netbbinfo = { 0xfeedbabedeadbeef, /* magic number */ @@ -82,7 +82,7 @@ struct netif_driver prom_netif_driver = prom_put, /* netif_put */ prom_end, /* netif_end */ prom_ifs, /* netif_ifs */ - NENTS(prom_ifs) /* netif_nifs */ + nitems(prom_ifs)/* netif_nifs */ }; int netfd, broken_firmware; Index: arch/amd64/stand/boot/conf.c === RCS file: /cvs/src/sys/arch/amd64/stand/boot/conf.c,v retrieving revision 1.15 diff -p -u -r1.15 conf.c --- arch/amd64/stand/boot/conf.c11 Aug 2010 14:18:52 - 1.15 +++ arch/amd64/stand/boot/conf.c6 Dec 2010 18:00:02 - @@ -56,10 +56,10 @@ void (*i386_probe2[])(void) = { }; struct i386_boot_probes probe_list[] = { - { "probing", i386_probe1, NENTS(i386_probe1) }, - { "disk",i386_probe2, NENTS(i386_probe2) } + { "probing", i386_probe1, nitems(i386_probe1) }, + { "disk",i386_probe2, nitems(i386_probe2) } }; -int nibprobes = NENTS(probe_list); +int nibprobes = nitems(probe_list); struct fs_ops file_system[] = { @@ -74,7 +74,7 @@ struct fs_ops file_system[] = { cd9660_stat, cd9660_readdir }, #endif }; -int nfsys = NENTS(file_system); +int nfsys = nitems(file_system); struct devsw devsw[] = { { "BIOS", biosstrategy, biosopen, biosclose, biosioctl }, @@ -82,7 +82,7 @@ struct devsw devsw[] = { { "TFTP", tftpstrategy, tftpopen, tftpclose, tftpioctl }, #endif }; -int ndevs = NENTS(devsw); +int ndevs = nitems(devsw); struct consdev constab[] = { { pc_probe, pc_init, pc_getc, pc_putc }, Index: arch/amd64/stand/cdboot/conf.c === RCS file: /cvs/src/sys/arch/amd64/stand/cdboot/conf.c,v retrieving revision 1.15 diff -p -u -r1.15 conf.c --- arch/amd64/stand/cdboot/conf.c 11 Aug 2010 14:18:52 - 1.15 +++ arch/amd64/stand/cdboot/conf.c 6 Dec 2010 18:00:02 - @@ -57,10 +57,10 @@ void (*amd64_probe2[])(void) = { }; struct i386_boot_probes probe_list[] = { - { "probing", amd64_probe1, NENTS(amd64_probe1) }, - { "disk",amd64_probe2, NENTS(amd64_probe2) } + { "probing", amd64_probe1, nitems(amd64_probe1) }, + { "disk",amd64_probe2, nitems(amd64_probe2) } }; -int nibprobes = NENTS(probe_list); +int nibprobes = nitems(probe_list); struct fs_ops file_system[] = { { cd9660_open, cd9660_close, cd9660_read, cd9660_write, cd9660_seek, @@ -76,12 +76,12 @@ struct fs_ops file_system[] = { fat_stat,fat_readdir}, #endif }; -int nfsys = NENTS(file_system); +int nfsys = nitems(file_system); struct devsw devsw[] = { { "BIOS", biosstrategy, biosopen, biosclose, biosioctl }, }; -int ndevs = NENTS(devsw); +int ndevs = nitems(devsw); struct consdev constab[] = { { pc_probe, pc_init, pc_getc, pc_putc }, Index: arch/amd64/stand/libsa/dev_i386.c === RCS file: /cvs/src/sys/arch/amd64/stand/libsa/dev_i386.c,v retrieving revision 1.3 diff -p -u -r1.3 dev_i386.c --- arch/amd64/stand/libsa/dev_i386.c 27 Jun 2007 20:29:37 - 1.3 +++ arch/amd64/stand/libsa/dev_i386.c 6 Dec 2010 18:00:02 - @@ -38,13 +38,13 @@ const char bdevs[][4] = { "wd", "", "fd", "", "sd", "st", "cd", "mcd", "", "", "", "", "", "", "", "scd", "", "hd", "" }; -const int nbdevs = NENTS(bdevs); +const int nbdevs = nitems(bdevs); const char cdevs[][4] = { "cn", "", "", "", "", "", "", "", "com", "", "", "", "pc" }; -const int ncdevs = NENTS(cdevs); +const int ncdevs = nitems(cdevs); /* pass dev_t to the open routines */ int Index: arch/amd64/stand/libsa/memprobe.c === RCS file: /cvs/src/sys/arch/amd64/stand/libsa/memprobe.c,v retrieving revision 1.7 diff -p -u -r1.7 memprobe.c --- arch/amd64/stand/libsa/memprobe.c 2 Jul 2010 00:36:52 - 1.7 +++ arch/amd64/stand/libsa/memprobe.c 6 Dec
Remove COMPAT_LINUX leftover from arm
None of the arm ports are using COMPAT_LINUX, hence this is commented. And should be removed too? -- Cheers, Jasper "During times of universal deceit, telling the truth becomes a revolutionary act." Index: arm/conf/files.arm === RCS file: /cvs/src/sys/arch/arm/conf/files.arm,v retrieving revision 1.15 diff -p -u -p -u -r1.15 files.arm --- arm/conf/files.arm 8 May 2009 02:57:32 - 1.15 +++ arm/conf/files.arm 18 Aug 2010 18:03:03 - @@ -104,14 +104,6 @@ file arch/arm/arm/vm_machdep.c # arm library functions file arch/arm/arm/bcopy_page.S -# Linux binary compatibility (COMPAT_LINUX) -#include "compat/ossaudio/files.ossaudio" -#include "compat/linux/files.linux" -#include "compat/linux/arch/arm/files.linux_arm" -#file arch/arm/arm/linux_sigcode.Scompat_linux -#file arch/arm/arm/linux_syscall.ccompat_linux -#file arch/arm/arm/linux_trap.c compat_linux - # machine-dependent libkern components file lib/libkern/arch/arm/divsi3.S file lib/libkern/arch/arm/memcpy.S
systat and livelocks
Hi, Currently the 'mbufs' view of systat only shows the difference of livelocks, this diff also adds the actual total (or sum). This is info most people are actually looking for anyway (as noticed by kettenis and sthen yesterday). OK? -- Cheers, Jasper "Stay Hungry. Stay Foolish." Index: mbufs.c === RCS file: /cvs/src/usr.bin/systat/mbufs.c,v retrieving revision 1.31 diff -p -u -r1.31 mbufs.c --- mbufs.c 5 Nov 2010 10:07:30 - 1.31 +++ mbufs.c 25 Nov 2010 13:55:48 - @@ -61,7 +61,8 @@ field_def fields_mbuf[] = { {"IFACE", 8, 16, 1, FLD_ALIGN_LEFT, -1, 0, 0, 0}, {"RXDELAY", 5, 8, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, {"TXDELAY", 5, 8, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, - {"LIVELOCKS", 5, 10, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, + {"LIVELOCKS (NOW)", 5, 15, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, + {"(SUM)", 5, 10, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, {"SIZE", 3, 5, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, {"ALIVE", 3, 5, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, {"LWM", 3, 5, 1, FLD_ALIGN_RIGHT, -1, 0, 0, 0}, @@ -72,15 +73,16 @@ field_def fields_mbuf[] = { #define FIELD_ADDR(x) (&fields_mbuf[x]) -#define FLD_MB_IFACE FIELD_ADDR(0) -#define FLD_MB_RXDELAY FIELD_ADDR(1) -#define FLD_MB_TXDELAY FIELD_ADDR(2) -#define FLD_MB_LLOCKS FIELD_ADDR(3) -#define FLD_MB_MSIZE FIELD_ADDR(4) -#define FLD_MB_MALIVE FIELD_ADDR(5) -#define FLD_MB_MLWMFIELD_ADDR(6) -#define FLD_MB_MHWMFIELD_ADDR(7) -#define FLD_MB_MCWMFIELD_ADDR(8) +#define FLD_MB_IFACE FIELD_ADDR(0) +#define FLD_MB_RXDELAY FIELD_ADDR(1) +#define FLD_MB_TXDELAY FIELD_ADDR(2) +#define FLD_MB_LLOCKS_NOW FIELD_ADDR(3) +#define FLD_MB_LLOCKS_SUM FIELD_ADDR(4) +#define FLD_MB_MSIZE FIELD_ADDR(5) +#define FLD_MB_MALIVE FIELD_ADDR(6) +#define FLD_MB_MLWMFIELD_ADDR(7) +#define FLD_MB_MHWMFIELD_ADDR(8) +#define FLD_MB_MCWMFIELD_ADDR(9) /* Define views */ @@ -89,7 +91,7 @@ field_def *view_mbuf[] = { #if NOTYET FLD_MB_RXDELAY, FLD_MB_TXDELAY, #endif - FLD_MB_LLOCKS, FLD_MB_MSIZE, FLD_MB_MALIVE, FLD_MB_MLWM, FLD_MB_MHWM, + FLD_MB_LLOCKS_NOW, FLD_MB_LLOCKS_SUM, FLD_MB_MSIZE, FLD_MB_MALIVE, FLD_MB_MLWM, FLD_MB_MHWM, FLD_MB_MCWM, NULL }; @@ -353,7 +355,8 @@ showmbuf(struct if_info *ifi, int p, int print_fld_str(FLD_MB_IFACE, ifi->name); if (p == -1 && ifi == interfaces) { - print_fld_uint(FLD_MB_LLOCKS, mcllivelocks_diff); + print_fld_uint(FLD_MB_LLOCKS_NOW, mcllivelocks_diff); + print_fld_uint(FLD_MB_LLOCKS_SUM, mcllivelocks_cur); print_fld_size(FLD_MB_MSIZE, mbpool.pr_size); print_fld_size(FLD_MB_MALIVE, mbpool.pr_nget - mbpool.pr_nput); print_fld_size(FLD_MB_MHWM, mbpool.pr_hiwat);
Re: A tiny feature for mg(1): beginning-of-line
On Wed, Oct 06, 2010 at 11:37:39AM +, Christian Weisgerber wrote: > Jasper Lievisse Adriaanse wrote: > > > Would this be OK with anyone? > > > > -Move cursor to the beginning of the line. > > > +Move cursor to the beginning of the line. Calling this function again > > > moves > > > +the cursor to the first non-whitespace character of the line. > > That's not the way emacs behaves and mg is supposed to be > finger-compatible with emacs. > > -- > Christian "naddy" Weisgerber na...@mips.inka.de Actually, Ingo forwarded me some mails from Kjell about this and that it subtly breaks c-mode.. So it can't go in as is. -- Cheers, Jasper Stay Hungry. Stay Foolish.
Re: A tiny feature for mg(1): beginning-of-line
Would this be OK with anyone? (With a tweak to start the new sentece on a new line). I've sent this to three usual mg developers, but none bothered to answer. On Sun, Sep 12, 2010 at 08:28:43PM -0700, Chris Palmer wrote: > I have found this feature useful in other text editors. Maybe you will too? > > > --- mg.1.orig Sun Sep 12 20:23:21 2010 > +++ mg.1 Sun Sep 12 20:24:36 2010 > @@ -320,7 +320,8 @@ Move cursor backwards by the specified number of words > .It beginning-of-buffer > Move cursor to the top of the buffer. > .It beginning-of-line > -Move cursor to the beginning of the line. > +Move cursor to the beginning of the line. Calling this function again moves > +the cursor to the first non-whitespace character of the line. > .It blink-and-insert > Self-insert a character, then search backwards and blink its > matching delimeter. > > > --- basic.c.orig Sun Sep 12 20:01:41 2010 > +++ basic.c Sun Sep 12 20:18:56 2010 > @@ -22,7 +22,21 @@ > int > gotobol(int f, int n) > { > - curwp->w_doto = 0; > + if (0 != curwp->w_doto) > + curwp->w_doto = 0; > + else { > + char * ln = curwp->w_dotp->l_text; > + int i = 0; > + > + if (ln) > + while (*ln && isspace(*ln)) { > + i++; > + ln++; > + } > + > + curwp->w_doto = i; > + } > + > return (TRUE); > } > > > -- > http://noncombatant.org/ > -- Cheers, Jasper Stay Hungry. Stay Foolish.
Re: RFC: changes to ports infrastructure
On Thu, Aug 19, 2010 at 11:55:22AM +0200, Marc Espie wrote: > I want to tweak the directory structure for ports. > I'd like to go for a lot of stuff to > > ports/infrastructure/bin > ports/infrastructure/lib > ports/infrastructure/man > > the current setup (build, fetch, install, package) is my mistake, and > frankly it sucks. Some of the scripts are callable outside of bsd.port.mk, > and you have to remember the path. There is no standard documentation out > of the scripts, and there are a few perl modules that could use one > single place. > > I would keep db, plist, templates. I don't think they're that confusing. > > The only drawback is that we're going to lose cvs history. doesn't seem > like such a big problem to me. Also, third party may lose "compatibility" > as scripts move around. That's easy to solve with symlinks, so I don't > care too much. > > Did I miss anything ? I think losing cvs history for mk/ would be worst. But since that dir doesn't move I don't care too much for losing the history of the other files. I can only add a yes please, as the current setup is rather confusing. Cheers, Jasper -- Stay Hungry. Stay Foolish.
Re: rename sgi's power(4) to nmi(4)
On Thu, Apr 01, 2010 at 09:57:52AM +0200, Mark Kettenis wrote: > > Date: Thu, 1 Apr 2010 09:32:03 +0200 > > From: Jasper Lievisse Adriaanse > > > > hi, > > > > the attached diff renames sgi's power(4) driver to nmi(4). that name > > makes actually a lot more sense. > > Please explain! The interrupt handler registered by this driver does > a psignal(initproc, SIGUSR2), which powers down the machine. Drivers > that do this are called power(4) on other hardware platforms as well. Well, actually it's just a Non-Meaningful Interrupt we send with power(4) driver. So we may just reflect it in the name too. Cheers, Jasper -- Stay Hungry. Stay Foolish.