Date: Wed, 5 Nov 2008 15:23:04 GMT From: Ed Schouten <ed@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 152533 for review Message-ID: <200811051523.mA5FN4df012681@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=152533 Change 152533 by ed@ed_dull on 2008/11/05 15:22:56 IFC snp(4) changes. Affected files ... .. //depot/projects/mpsafetty/etc/defaults/rc.conf#9 integrate .. //depot/projects/mpsafetty/etc/devd.conf#3 integrate .. //depot/projects/mpsafetty/lib/libutil/Makefile#2 integrate .. //depot/projects/mpsafetty/lib/libutil/login_cap.c#2 integrate .. //depot/projects/mpsafetty/lib/libutil/login_class.c#6 integrate .. //depot/projects/mpsafetty/lib/libutil/pty.c#5 integrate .. //depot/projects/mpsafetty/lib/libutil/realhostname.c#3 integrate .. //depot/projects/mpsafetty/libexec/rpc.rquotad/Makefile#2 integrate .. //depot/projects/mpsafetty/libexec/rpc.rquotad/rquotad.c#2 integrate .. //depot/projects/mpsafetty/sbin/bsdlabel/bsdlabel.8#2 integrate .. //depot/projects/mpsafetty/share/misc/committers-doc.dot#2 integrate .. //depot/projects/mpsafetty/sys/compat/linprocfs/linprocfs.c#8 integrate .. //depot/projects/mpsafetty/sys/conf/NOTES#17 integrate .. //depot/projects/mpsafetty/sys/dev/acpi_support/acpi_asus.c#4 integrate .. //depot/projects/mpsafetty/sys/dev/hwpmc/hwpmc_mod.c#5 integrate .. //depot/projects/mpsafetty/sys/dev/snp/snp.c#15 integrate .. //depot/projects/mpsafetty/sys/dev/usb2/wlan/if_zyd2.c#2 integrate .. //depot/projects/mpsafetty/sys/fs/procfs/procfs.c#2 integrate .. //depot/projects/mpsafetty/sys/fs/procfs/procfs_map.c#3 integrate .. //depot/projects/mpsafetty/sys/fs/unionfs/union_vfsops.c#4 integrate .. //depot/projects/mpsafetty/sys/kern/kern_descrip.c#8 integrate .. //depot/projects/mpsafetty/sys/kern/kern_proc.c#10 integrate .. //depot/projects/mpsafetty/sys/kern/kern_sig.c#6 integrate .. //depot/projects/mpsafetty/sys/kern/kern_thr.c#5 integrate .. //depot/projects/mpsafetty/sys/kern/kern_thread.c#7 integrate .. //depot/projects/mpsafetty/sys/kern/subr_sleepqueue.c#8 integrate .. //depot/projects/mpsafetty/sys/kern/sys_process.c#4 integrate .. //depot/projects/mpsafetty/sys/kern/vfs_syscalls.c#9 integrate .. //depot/projects/mpsafetty/sys/modules/Makefile#16 integrate .. //depot/projects/mpsafetty/sys/modules/snp/Makefile#3 integrate .. //depot/projects/mpsafetty/sys/net/if_arcsubr.c#3 integrate .. //depot/projects/mpsafetty/sys/net/if_gif.c#4 integrate .. //depot/projects/mpsafetty/sys/net/if_spppsubr.c#5 integrate .. //depot/projects/mpsafetty/sys/net/if_tun.c#6 integrate .. //depot/projects/mpsafetty/sys/net/radix_mpath.c#2 integrate .. //depot/projects/mpsafetty/sys/nfsserver/nfs_srvkrpc.c#2 integrate .. //depot/projects/mpsafetty/sys/security/audit/audit_arg.c#5 integrate .. //depot/projects/mpsafetty/sys/security/audit/audit_bsm_klib.c#7 integrate .. //depot/projects/mpsafetty/sys/sys/proc.h#10 integrate .. //depot/projects/mpsafetty/sys/ufs/ufs/ufs_acl.c#2 integrate .. //depot/projects/mpsafetty/sys/ufs/ufs/ufs_dirhash.c#5 integrate .. //depot/projects/mpsafetty/usr.bin/du/du.c#2 integrate .. //depot/projects/mpsafetty/usr.bin/tar/test/main.c#3 integrate .. //depot/projects/mpsafetty/usr.bin/vmstat/vmstat.c#3 integrate .. //depot/projects/mpsafetty/usr.sbin/gssd/gssd.8#2 integrate Differences ... ==== //depot/projects/mpsafetty/etc/defaults/rc.conf#9 (text+ko) ==== @@ -15,7 +15,7 @@ # For a more detailed explanation of all the rc.conf variables, please # refer to the rc.conf(5) manual page. # -# $FreeBSD: src/etc/defaults/rc.conf,v 1.345 2008/09/16 20:18:25 thompsa Exp $ +# $FreeBSD: src/etc/defaults/rc.conf,v 1.346 2008/11/05 10:20:33 keramida Exp $ ############################################################## ### Important initial Boot-time options #################### @@ -265,6 +265,9 @@ kpasswdd_server_enable="NO" # Run kpasswdd (or NO) kpasswdd_server="/usr/libexec/kpasswdd" # path to kerberos 5 passwd daemon +gssd_enable="NO" # Run the gssd daemon (or NO). +gssd_flags="" # Flags for gssd. + rwhod_enable="NO" # Run the rwho daemon (or NO). rwhod_flags="" # Flags for rwhod rarpd_enable="NO" # Run rarpd (or NO). ==== //depot/projects/mpsafetty/etc/devd.conf#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/devd.conf,v 1.43 2008/10/27 16:20:40 thompsa Exp $ +# $FreeBSD: src/etc/devd.conf,v 1.45 2008/11/04 23:03:36 delphij Exp $ # # Refer to devd.conf(5) and devd(8) man pages for the details on how to # run and configure devd. @@ -255,6 +255,28 @@ action "/etc/rc.resume acpi $notify"; }; +# The next blocks enable volume hotkeys that can be found on the Asus laptops +notify 0 { + match "system" "ACPI"; + match "subsystem" "ASUS"; + match "notify" "0x32"; + action "mixer 0"; +}; + +notify 0 { + match "system" "ACPI"; + match "subsystem" "ASUS"; + match "notify" "0x31"; + action "mixer vol -10"; +}; + +notify 0 { + match "system" "ACPI"; + match "subsystem" "ASUS"; + match "notify" "0x30"; + action "mixer vol +10"; +}; + # The next blocks enable volume hotkeys that can be found on the Asus EeePC # The four keys above the keyboard notify 0x1a through to 0x1d respectively notify 0 { ==== //depot/projects/mpsafetty/lib/libutil/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.1 (Berkeley) 6/4/93 -# $FreeBSD: src/lib/libutil/Makefile,v 1.68 2008/07/01 22:30:57 jhb Exp $ +# $FreeBSD: src/lib/libutil/Makefile,v 1.71 2008/11/05 11:06:10 des Exp $ SHLIBDIR?= /lib @@ -8,13 +8,15 @@ LIB= util SHLIB_MAJOR= 7 -SRCS= _secure_path.c auth.c gr_util.c expand_number.c flopen.c fparseln.c \ +SRCS= _secure_path.c auth.c expand_number.c flopen.c fparseln.c \ hexdump.c humanize_number.c kld.c login.c login_auth.c login_cap.c \ login_class.c login_crypt.c login_ok.c login_times.c login_tty.c \ logout.c logwtmp.c pidfile.c property.c pty.c pw_util.c realhostname.c \ stub.c trimdomain.c uucplock.c INCS= libutil.h login_cap.h +#WARNS?= 6 + CFLAGS+= -DLIBC_SCCS .if ${MK_INET6_SUPPORT} != "no" ==== //depot/projects/mpsafetty/lib/libutil/login_cap.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libutil/login_cap.c,v 1.34 2007/06/14 06:42:49 yar Exp $"); +__FBSDID("$FreeBSD: src/lib/libutil/login_cap.c,v 1.35 2008/11/04 13:49:53 des Exp $"); #include <sys/types.h> #include <sys/time.h> @@ -61,6 +61,8 @@ static size_t internal_arraysz = 0; static const char ** internal_array = NULL; +static char path_login_conf[] = _PATH_LOGIN_CONF; + static char * allocstr(const char *str) { @@ -215,15 +217,14 @@ if (dir && snprintf(userpath, MAXPATHLEN, "%s/%s", dir, _FILE_LOGIN_CONF) < MAXPATHLEN) { - login_dbarray[i] = userpath; if (_secure_path(userpath, pwd->pw_uid, pwd->pw_gid) != -1) - i++; /* only use 'secure' data */ + login_dbarray[i++] = userpath; } /* * XXX: Why to add the system database if the class is `me'? */ - if (_secure_path(_PATH_LOGIN_CONF, 0, 0) != -1) - login_dbarray[i++] = _PATH_LOGIN_CONF; + if (_secure_path(path_login_conf, 0, 0) != -1) + login_dbarray[i++] = path_login_conf; login_dbarray[i] = NULL; memset(lc, 0, sizeof(login_cap_t)); ==== //depot/projects/mpsafetty/lib/libutil/login_class.c#6 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libutil/login_class.c,v 1.29 2008/10/20 16:51:43 des Exp $"); +__FBSDID("$FreeBSD: src/lib/libutil/login_class.c,v 1.30 2008/11/04 13:49:53 des Exp $"); #include <sys/param.h> #include <sys/cpuset.h> @@ -142,14 +142,13 @@ int tildes = 0; int dollas = 0; char *p; + const char *q; if (pwd != NULL) { - /* Count the number of ~'s in var to substitute */ - for (p = (char *)var; (p = strchr(p, '~')) != NULL; p++) - ++tildes; - /* Count the number of $'s in var to substitute */ - for (p = (char *)var; (p = strchr(p, '$')) != NULL; p++) - ++dollas; + for (q = var; *q != '\0'; ++q) { + tildes += (*q == '~'); + dollas += (*q == '$'); + } } np = malloc(strlen(var) + (dollas * nlen) ==== //depot/projects/mpsafetty/lib/libutil/pty.c#5 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libutil/pty.c,v 1.24 2008/10/28 06:00:13 ed Exp $"); +__FBSDID("$FreeBSD: src/lib/libutil/pty.c,v 1.25 2008/11/04 13:50:50 des Exp $"); #if defined(LIBC_SCCS) && !defined(lint) #if 0 @@ -47,6 +47,7 @@ #include <stdlib.h> #include <string.h> #include <termios.h> +#include <unistd.h> int openpty(int *amaster, int *aslave, char *name, struct termios *termp, ==== //depot/projects/mpsafetty/lib/libutil/realhostname.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libutil/realhostname.c,v 1.19 2008/10/17 21:21:14 delphij Exp $"); +__FBSDID("$FreeBSD: src/lib/libutil/realhostname.c,v 1.20 2008/11/05 12:13:10 des Exp $"); #include <sys/param.h> #include <sys/socket.h> @@ -83,6 +83,18 @@ return result; } +/* + * struct sockaddr has very lax alignment requirements, since all its + * members are char or equivalent. This is a problem when trying to + * dereference a struct sockaddr_in6 * that was passed in as a struct + * sockaddr *. Although we know (or trust) that the passed-in struct was + * properly aligned, the compiler doesn't, and (rightly) complains. These + * macros perform the cast in a way that the compiler will accept. + */ +#define SOCKADDR_IN6(p) ((struct sockaddr_in6 *)(void *)(p)) +#define SOCKADDR_IN(p) ((struct sockaddr_in *)(void *)(p)) +#define SOCKINET(p) ((struct sockinet *)(void *)(p)) + int realhostname_sa(char *host, size_t hsize, struct sockaddr *addr, int addrlen) { @@ -96,10 +108,10 @@ /* IPv4 mapped IPv6 addr consideraton, specified in rfc2373. */ if (addr->sa_family == AF_INET6 && addrlen == sizeof(struct sockaddr_in6) && - IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)addr)->sin6_addr)) { + IN6_IS_ADDR_V4MAPPED(&SOCKADDR_IN6(addr)->sin6_addr)) { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)addr; + sin6 = SOCKADDR_IN6(addr); memset(&lsin, 0, sizeof(lsin)); lsin.sin_len = sizeof(struct sockaddr_in); @@ -142,15 +154,16 @@ } if (sa->sa_len == addrlen && sa->sa_family == addr->sa_family) { - ((struct sockinet *)sa)->si_port = ((struct sockinet *)addr)->si_port; + SOCKINET(sa)->si_port = SOCKINET(addr)->si_port; #ifdef INET6 /* * XXX: sin6_socpe_id may not been * filled by DNS */ if (sa->sa_family == AF_INET6 && - ((struct sockaddr_in6 *)sa)->sin6_scope_id == 0) - ((struct sockaddr_in6 *)sa)->sin6_scope_id = ((struct sockaddr_in6 *)addr)->sin6_scope_id; + SOCKADDR_IN6(sa)->sin6_scope_id == 0) + SOCKADDR_IN6(sa)->sin6_scope_id = + SOCKADDR_IN6(addr)->sin6_scope_id; #endif if (!memcmp(sa, addr, sa->sa_len)) { result = HOSTNAME_FOUND; ==== //depot/projects/mpsafetty/libexec/rpc.rquotad/Makefile#2 (text+ko) ==== @@ -1,9 +1,11 @@ -# $FreeBSD: src/libexec/rpc.rquotad/Makefile,v 1.6 2001/03/26 14:22:07 ru Exp $ +# $FreeBSD: src/libexec/rpc.rquotad/Makefile,v 1.7 2008/11/04 14:17:49 des Exp $ PROG = rpc.rquotad SRCS = rquotad.c MAN = rpc.rquotad.8 +WARNS ?= 6 + DPADD= ${LIBRPCSVC} LDADD= -lrpcsvc ==== //depot/projects/mpsafetty/libexec/rpc.rquotad/rquotad.c#2 (text+ko) ==== @@ -1,40 +1,36 @@ /* * by Manuel Bouyer (bouyer@ensta.fr) - * + * * There is no copyright, you can use it as you want. */ -#ifndef lint -static const char rcsid[] = - "$FreeBSD: src/libexec/rpc.rquotad/rquotad.c,v 1.9 2005/02/14 17:42:57 stefanf Exp $"; -#endif /* not lint */ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD: src/libexec/rpc.rquotad/rquotad.c,v 1.10 2008/11/04 14:17:49 des Exp $"); #include <sys/param.h> -#include <sys/types.h> #include <sys/mount.h> #include <sys/file.h> #include <sys/stat.h> #include <sys/socket.h> -#include <signal.h> + +#include <ufs/ufs/quota.h> +#include <rpc/rpc.h> +#include <rpcsvc/rquota.h> +#include <arpa/inet.h> +#include <netdb.h> #include <ctype.h> #include <errno.h> #include <fstab.h> #include <grp.h> #include <pwd.h> +#include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <syslog.h> #include <unistd.h> -#include <syslog.h> - -#include <ufs/ufs/quota.h> -#include <rpc/rpc.h> -#include <rpcsvc/rquota.h> -#include <arpa/inet.h> -#include <netdb.h> - void rquota_service(struct svc_req *request, SVCXPRT *transp); void sendquota(struct svc_req *request, SVCXPRT *transp); void printerr_reply(SVCXPRT *transp); @@ -56,15 +52,17 @@ int from_inetd = 1; -void +static void cleanup(int sig) { + + (void) sig; (void) rpcb_unset(RQUOTAPROG, RQUOTAVERS, NULL); exit(0); } int -main(int argc, char *argv[]) +main(void) { SVCXPRT *transp; int ok; @@ -101,19 +99,22 @@ ok = svc_create(rquota_service, RQUOTAPROG, RQUOTAVERS, "udp"); if (!ok) { - syslog(LOG_ERR, "unable to register (RQUOTAPROG, RQUOTAVERS, %s)", (!from_inetd)?"udp":"(inetd)"); + syslog(LOG_ERR, + "unable to register (RQUOTAPROG, RQUOTAVERS, %s)", + from_inetd ? "(inetd)" : "udp"); exit(1); } - initfs(); /* init the fs_stat list */ + initfs(); svc_run(); syslog(LOG_ERR, "svc_run returned"); exit(1); } -void +void rquota_service(struct svc_req *request, SVCXPRT *transp) { + switch (request->rq_proc) { case NULLPROC: (void)svc_sendreply(transp, (xdrproc_t)xdr_void, (char *)NULL); @@ -133,7 +134,7 @@ } /* read quota for the specified id, and send it */ -void +void sendquota(struct svc_req *request, SVCXPRT *transp) { struct getquota_args getq_args; @@ -183,7 +184,7 @@ } } -void +void printerr_reply(SVCXPRT *transp) /* when a reply to a request failed */ { char name[INET6_ADDRSTRLEN]; @@ -203,7 +204,7 @@ } /* initialise the fs_tab list from entries in /etc/fstab */ -void +void initfs(void) { struct fs_stat *fs_current = NULL; @@ -222,10 +223,12 @@ fs_current = (struct fs_stat *) malloc(sizeof(struct fs_stat)); fs_current->fs_next = fs_next; /* next element */ - fs_current->fs_file = malloc(sizeof(char) * (strlen(fs->fs_file) + 1)); + fs_current->fs_file = + malloc(sizeof(char) * (strlen(fs->fs_file) + 1)); strcpy(fs_current->fs_file, fs->fs_file); - fs_current->qfpathname = malloc(sizeof(char) * (strlen(qfpathname) + 1)); + fs_current->qfpathname = + malloc(sizeof(char) * (strlen(qfpathname) + 1)); strcpy(fs_current->qfpathname, qfpathname); stat(fs_current->fs_file, &st); @@ -242,7 +245,7 @@ * Return 0 if fail, 1 otherwise */ int -getfsquota(long id, char *path, struct dqblk *dqblk) +getfsquota(long id, char *path, struct dqblk *dqblk) { struct stat st_path; struct fs_stat *fs; @@ -301,8 +304,8 @@ { static char initname, usrname[100]; static char buf[BUFSIZ]; - char *opt, *cp; - char *qfextension[] = INITQFNAMES; + char *opt, *cp; + const char *qfextension[] = INITQFNAMES; if (!initname) { sprintf(usrname, "%s%s", qfextension[USRQUOTA], QUOTAFILENAME); @@ -321,7 +324,8 @@ *qfnamep = cp; return (1); } - sprintf(buf, "%s/%s.%s", fs->fs_file, QUOTAFILENAME, qfextension[USRQUOTA]); + sprintf(buf, "%s/%s.%s", fs->fs_file, QUOTAFILENAME, + qfextension[USRQUOTA]); *qfnamep = buf; return (1); } ==== //depot/projects/mpsafetty/sbin/bsdlabel/bsdlabel.8#2 (text+ko) ==== @@ -29,7 +29,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)disklabel.8 8.2 (Berkeley) 4/19/94 -.\" $FreeBSD: src/sbin/bsdlabel/bsdlabel.8,v 1.70 2007/12/08 23:41:13 remko Exp $ +.\" $FreeBSD: src/sbin/bsdlabel/bsdlabel.8,v 1.72 2008/11/05 09:28:30 maxim Exp $ .\" .Dd December 8, 2007 .Dt BSDLABEL 8 @@ -481,7 +481,7 @@ labels are restricted to a maximum of 2^32-1 sectors. This usually means 2TB of disk space. Larger disks should be partitioned using another method such as -.Xr gpt 8 . +.Xr gpart 8 . .Pp The various .Bx Ns s @@ -497,5 +497,5 @@ .Xr disktab 5 , .Xr boot0cfg 8 , .Xr fdisk 8 , -.Xr gpt 8 , +.Xr gpart 8 , .Xr newfs 8 ==== //depot/projects/mpsafetty/share/misc/committers-doc.dot#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/misc/committers-doc.dot,v 1.25 2008/07/03 17:10:18 marcel Exp $ +# $FreeBSD: src/share/misc/committers-doc.dot,v 1.26 2008/11/04 19:20:19 remko Exp $ # This file is meant to list all FreeBSD doc+www committers and describe the # mentor-mentee relationships between them. @@ -66,6 +66,7 @@ pav [label="Pav Lucistnik\npav@FreeBSD.org\n2005/08/12"] pgj [label="Gabor Pali\npgj@FreeBSD.org\n2008/04/21"] remko [label="Remko Lodder\nremko@FreeBSD.org\n2004/10/16"] +rene [label="Rene Ladan\nrene@FreeBSD.org\n2008/11/03"] roam [label="Peter Pentchev\nroam@FreeBSD.org\n2003/02/14"] simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2003/07/20"] trhodes [label="Tom Rhodes\ntrhodes@FreeBSD.org\n2002/03/25"] @@ -116,6 +117,7 @@ nik -> keramida remko -> jkois +remko -> rene simon -> josef simon -> remko ==== //depot/projects/mpsafetty/sys/compat/linprocfs/linprocfs.c#8 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2000 Dag-Erling Coïdan Smørgrav + * Copyright (c) 2000 Dag-Erling Coïdan Smørgrav * Copyright (c) 1999 Pierre Beyssac * Copyright (c) 1993 Jan-Simon Pendry * Copyright (c) 1993 @@ -42,7 +42,7 @@ #include "opt_compat.h" #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.125 2008/10/04 14:08:16 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.127 2008/11/05 15:08:09 des Exp $"); #include <sys/param.h> #include <sys/queue.h> @@ -318,11 +318,13 @@ NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, linux_emul_path, td); flep = NULL; error = namei(&nd); - VFS_UNLOCK_GIANT(NDHASGIANT(&nd)); - if (error != 0 || vn_fullpath(td, nd.ni_vp, &dlep, &flep) != 0) - lep = linux_emul_path; - else - lep = dlep; + lep = linux_emul_path; + if (error == 0) { + if (vn_fullpath(td, nd.ni_vp, &dlep, &flep) != 0) + lep = dlep; + vrele(nd.ni_vp); + VFS_UNLOCK_GIANT(NDHASGIANT(&nd)); + } lep_len = strlen(lep); mtx_lock(&mountlist_mtx); ==== //depot/projects/mpsafetty/sys/conf/NOTES#17 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1514 2008/11/03 00:53:54 scottl Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1515 2008/11/05 15:04:03 ed Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -1278,6 +1278,7 @@ device pty #BSD-style compatibility pseudo ttys device nmdm #back-to-back tty devices device md #Memory/malloc disk +device snp #Snoop device - to look at pty/vty/etc.. device ccd #Concatenated disk driver device firmware #firmware(9) support ==== //depot/projects/mpsafetty/sys/dev/acpi_support/acpi_asus.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_asus.c,v 1.38 2008/08/19 22:28:24 rpaulo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_asus.c,v 1.39 2008/11/04 11:52:50 rpaulo Exp $"); /* * Driver for extra ACPI-controlled gadgets (hotkeys, leds, etc) found on @@ -93,6 +93,9 @@ char *wlan_set; void (*n_func)(ACPI_HANDLE, UINT32, void *); + + char *lcdd; + void (*lcdd_n_func)(ACPI_HANDLE, UINT32, void *); }; struct acpi_asus_led { @@ -113,6 +116,7 @@ struct acpi_asus_softc { device_t dev; ACPI_HANDLE handle; + ACPI_HANDLE lcdd_handle; struct acpi_asus_model *model; struct sysctl_ctx_list sysctl_ctx; @@ -133,6 +137,9 @@ int s_wlan; }; +static void acpi_asus_lcdd_notify(ACPI_HANDLE h, UINT32 notify, + void *context); + /* * We can identify Asus laptops from the string they return * as a result of calling the ATK0100 'INIT' method. @@ -205,6 +212,20 @@ .disp_set = "SDSP" }, { + .name = "A8SR", + .bled_set = "BLED", + .mled_set = "MLED", + .wled_set = "WLED", + .lcd_get = NULL, + .lcd_set = "\\_SB.PCI0.SBRG.EC0._Q10", + .brn_get = "GPLV", + .brn_set = "SPLV", + .disp_get = "\\_SB.PCI0.P0P1.VGA.GETD", + .disp_set = "SDSP", + .lcdd = "\\_SB.PCI0.P0P1.VGA.LCDD", + .lcdd_n_func = acpi_asus_lcdd_notify + }, + { .name = "D1x", .mled_set = "MLED", .lcd_get = "\\GP11", @@ -762,6 +783,22 @@ AcpiInstallNotifyHandler(sc->handle, ACPI_SYSTEM_NOTIFY, sc->model->n_func, dev); + /* Find and hook the 'LCDD' object */ + if (sc->model->lcdd != NULL && sc->model->lcdd_n_func != NULL) { + ACPI_STATUS res; + + sc->lcdd_handle = NULL; + res = AcpiGetHandle((sc->model->lcdd[0] == '\\' ? + NULL : sc->handle), sc->model->lcdd, &(sc->lcdd_handle)); + if (ACPI_SUCCESS(res)) { + AcpiInstallNotifyHandler((sc->lcdd_handle), + ACPI_DEVICE_NOTIFY, sc->model->lcdd_n_func, dev); + } else { + printf("%s: unable to find LCD device '%s'\n", + __func__, sc->model->lcdd); + } + } + return (0); } @@ -796,6 +833,13 @@ /* Remove notify handler */ AcpiRemoveNotifyHandler(sc->handle, ACPI_SYSTEM_NOTIFY, acpi_asus_notify); + + if (sc->lcdd_handle) { + KASSERT(sc->model->lcdd_n_func != NULL, + ("model->lcdd_n_func is NULL, but lcdd_handle is non-zero")); + AcpiRemoveNotifyHandler((sc->lcdd_handle), + ACPI_DEVICE_NOTIFY, sc->model->lcdd_n_func); + } /* Free sysctl tree */ sysctl_ctx_free(&sc->sysctl_ctx); @@ -1165,6 +1209,12 @@ } else if (notify == 0x34) { sc->s_lcd = 0; ACPI_VPRINT(sc->dev, acpi_sc, "LCD turned off\n"); + } else if (notify == 0x86) { + acpi_asus_sysctl_set(sc, ACPI_ASUS_METHOD_BRN, sc->s_brn-1); + ACPI_VPRINT(sc->dev, acpi_sc, "Brightness decreased\n"); + } else if (notify == 0x87) { + acpi_asus_sysctl_set(sc, ACPI_ASUS_METHOD_BRN, sc->s_brn+1); + ACPI_VPRINT(sc->dev, acpi_sc, "Brightness increased\n"); } else { /* Notify devd(8) */ acpi_UserNotify("ASUS", h, notify); @@ -1173,6 +1223,31 @@ } static void +acpi_asus_lcdd_notify(ACPI_HANDLE h, UINT32 notify, void *context) +{ + struct acpi_asus_softc *sc; + struct acpi_softc *acpi_sc; + + ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); + + sc = device_get_softc((device_t)context); + acpi_sc = acpi_device_get_parent_softc(sc->dev); + + ACPI_SERIAL_BEGIN(asus); + switch (notify) { + case 0x87: + acpi_asus_sysctl_set(sc, ACPI_ASUS_METHOD_BRN, sc->s_brn-1); + ACPI_VPRINT(sc->dev, acpi_sc, "Brightness decreased\n"); + break; + case 0x86: + acpi_asus_sysctl_set(sc, ACPI_ASUS_METHOD_BRN, sc->s_brn+1); + ACPI_VPRINT(sc->dev, acpi_sc, "Brightness increased\n"); + break; + } + ACPI_SERIAL_END(asus); +} + +static void acpi_asus_eeepc_notify(ACPI_HANDLE h, UINT32 notify, void *context) { struct acpi_asus_softc *sc; ==== //depot/projects/mpsafetty/sys/dev/hwpmc/hwpmc_mod.c#5 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_mod.c,v 1.36 2008/10/23 20:26:15 des Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_mod.c,v 1.37 2008/11/04 19:04:01 jhb Exp $"); #include <sys/param.h> #include <sys/eventhandler.h> @@ -680,9 +680,7 @@ *fullpath = "unknown"; *freepath = NULL; - vn_lock(v, LK_CANRECURSE | LK_EXCLUSIVE | LK_RETRY); vn_fullpath(curthread, v, fullpath, freepath); - VOP_UNLOCK(v, 0); } /* ==== //depot/projects/mpsafetty/sys/dev/snp/snp.c#15 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); +__FBSDID("$FreeBSD: src/sys/dev/snp/snp.c,v 1.111 2008/11/05 15:04:03 ed Exp $"); #include <sys/param.h> #include <sys/conf.h> ==== //depot/projects/mpsafetty/sys/dev/usb2/wlan/if_zyd2.c#2 (text+ko) ==== @@ -1,6 +1,6 @@ /* $OpenBSD: if_zyd.c,v 1.52 2007/02/11 00:08:04 jsg Exp $ */ /* $NetBSD: if_zyd.c,v 1.7 2007/06/21 04:04:29 kiyohara Exp $ */ -/* $FreeBSD: src/sys/dev/usb2/wlan/if_zyd2.c,v 1.1 2008/11/04 02:31:03 alfred Exp $ */ +/* $FreeBSD: src/sys/dev/usb2/wlan/if_zyd2.c,v 1.3 2008/11/04 20:57:39 rink Exp $ */ /*- * Copyright (c) 2006 by Damien Bergamini <damien.bergamini@free.fr> @@ -20,7 +20,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/usb2/wlan/if_zyd2.c,v 1.1 2008/11/04 02:31:03 alfred Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb2/wlan/if_zyd2.c,v 1.3 2008/11/04 20:57:39 rink Exp $"); /* * ZyDAS ZD1211/ZD1211B USB WLAN driver @@ -392,10 +392,10 @@ usb2_copy_out(xfer->frbuffers, 0, &sc->sc_intr_ibuf, actlen); - switch (cmd->code) { - case htole16(ZYD_NOTIF_RETRYSTATUS): + switch (le16toh(cmd->code)) { + case ZYD_NOTIF_RETRYSTATUS: goto handle_notif_retrystatus; - case htole16(ZYD_NOTIF_IORD): + case ZYD_NOTIF_IORD: goto handle_notif_iord; default: DPRINTFN(2, "unknown indication: 0x%04x\n", ==== //depot/projects/mpsafetty/sys/fs/procfs/procfs.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ * * @(#)procfs_vfsops.c 8.7 (Berkeley) 5/10/95 * - * $FreeBSD: src/sys/fs/procfs/procfs.c,v 1.18 2008/01/13 14:44:05 attilio Exp $ + * $FreeBSD: src/sys/fs/procfs/procfs.c,v 1.19 2008/11/04 19:04:01 jhb Exp $ */ #include <sys/param.h> @@ -70,17 +70,13 @@ char *fullpath = "unknown"; char *freepath = NULL; struct vnode *textvp; - int err; + PROC_LOCK(p); textvp = p->p_textvp; - VI_LOCK(textvp); - vholdl(textvp); - err = vn_lock(textvp, LK_EXCLUSIVE | LK_INTERLOCK); + vhold(textvp); + PROC_UNLOCK(p); + vn_fullpath(td, textvp, &fullpath, &freepath); vdrop(textvp); - if (err) - return (err); - vn_fullpath(td, textvp, &fullpath, &freepath); - VOP_UNLOCK(textvp, 0); sbuf_printf(sb, "%s", fullpath); if (freepath) free(freepath, M_TEMP); ==== //depot/projects/mpsafetty/sys/fs/procfs/procfs_map.c#3 (text+ko) ==== @@ -32,7 +32,7 @@ * * @(#)procfs_status.c 8.3 (Berkeley) 2/17/94 * - * $FreeBSD: src/sys/fs/procfs/procfs_map.c,v 1.42 2008/10/04 14:08:16 kib Exp $ + * $FreeBSD: src/sys/fs/procfs/procfs_map.c,v 1.43 2008/11/04 19:04:01 jhb Exp $ */ #include "opt_compat.h" @@ -175,10 +175,9 @@ shadow_count = obj->shadow_count; VM_OBJECT_UNLOCK(obj); if (vp != NULL) { + vn_fullpath(td, vp, &fullpath, &freepath); vfslocked = VFS_LOCK_GIANT(vp->v_mount); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - vn_fullpath(td, vp, &fullpath, &freepath); - vput(vp); + vrele(vp); VFS_UNLOCK_GIANT(vfslocked); } } else { ==== //depot/projects/mpsafetty/sys/fs/unionfs/union_vfsops.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ * SUCH DAMAGE. * * @(#)union_vfsops.c 8.20 (Berkeley) 5/20/95 - * $FreeBSD: src/sys/fs/unionfs/union_vfsops.c,v 1.93 2008/11/03 10:38:00 dfr Exp $ + * $FreeBSD: src/sys/fs/unionfs/union_vfsops.c,v 1.94 2008/11/04 18:54:44 jhb Exp $ */ #include <sys/param.h> @@ -268,7 +268,7 @@ /* * Find upper node */ - NDINIT(ndp, LOOKUP, FOLLOW | WANTPARENT | LOCKLEAF, UIO_SYSSPACE, target, td); + NDINIT(ndp, LOOKUP, FOLLOW | LOCKLEAF, UIO_SYSSPACE, target, td); if ((error = namei(ndp))) return (error); @@ -278,9 +278,6 @@ lowerrootvp = mp->mnt_vnodecovered; upperrootvp = ndp->ni_vp; - vrele(ndp->ni_dvp); - ndp->ni_dvp = NULLVP; - /* create unionfs_mount */ ump = (struct unionfs_mount *)malloc(sizeof(struct unionfs_mount), M_UNIONFSMNT, M_WAITOK | M_ZERO); ==== //depot/projects/mpsafetty/sys/kern/kern_descrip.c#8 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_descrip.c,v 1.341 2008/11/03 20:31:00 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_descrip.c,v 1.342 2008/11/04 19:04:01 jhb Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -2537,10 +2537,9 @@ freepath = NULL; fullpath = "-"; FILEDESC_SUNLOCK(fdp); + vn_fullpath(curthread, vp, &fullpath, &freepath); vfslocked = VFS_LOCK_GIANT(vp->v_mount); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - vn_fullpath(curthread, vp, &fullpath, &freepath); - vput(vp); + vrele(vp); VFS_UNLOCK_GIANT(vfslocked); strlcpy(kif->kf_path, fullpath, sizeof(kif->kf_path)); if (freepath != NULL) @@ -2708,10 +2707,9 @@ freepath = NULL; fullpath = "-"; FILEDESC_SUNLOCK(fdp); + vn_fullpath(curthread, vp, &fullpath, &freepath); vfslocked = VFS_LOCK_GIANT(vp->v_mount); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - vn_fullpath(curthread, vp, &fullpath, &freepath); - vput(vp); + vrele(vp); VFS_UNLOCK_GIANT(vfslocked); strlcpy(kif->kf_path, fullpath, sizeof(kif->kf_path)); ==== //depot/projects/mpsafetty/sys/kern/kern_proc.c#10 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.270 2008/10/31 05:43:19 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.271 2008/11/04 19:04:01 jhb Exp $"); #include "opt_ddb.h" #include "opt_kdtrace.h" @@ -1440,11 +1440,11 @@ kve->kve_shadow_count = obj->shadow_count; VM_OBJECT_UNLOCK(obj); if (vp != NULL) { - vfslocked = VFS_LOCK_GIANT(vp->v_mount); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); vn_fullpath(curthread, vp, &fullpath, &freepath); cred = curthread->td_ucred; + vfslocked = VFS_LOCK_GIANT(vp->v_mount); + vn_lock(vp, LK_SHARED | LK_RETRY); if (VOP_GETATTR(vp, &va, cred) == 0) { kve->kve_fileid = va.va_fileid; kve->kve_fsid = va.va_fsid; ==== //depot/projects/mpsafetty/sys/kern/kern_sig.c#6 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.365 2008/10/23 07:55:38 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.366 2008/11/05 03:01:23 davidxu Exp $"); #include "opt_compat.h" #include "opt_kdtrace.h" @@ -2115,15 +2115,19 @@ * Otherwise, process goes back to sleep state. */ p->p_flag &= ~P_STOPPED_SIG; + PROC_SLOCK(p); if (p->p_numthreads == p->p_suspcount) { + PROC_SUNLOCK(p); p->p_flag |= P_CONTINUED; p->p_xstat = SIGCONT; PROC_LOCK(p->p_pptr); childproc_continued(p); PROC_UNLOCK(p->p_pptr); + PROC_SLOCK(p); } if (action == SIG_DFL) { thread_unsuspend(p); + PROC_SUNLOCK(p); sigqueue_delete(sigqueue, sig); goto out; } @@ -2132,12 +2136,14 @@ * The process wants to catch it so it needs * to run at least one thread, but which one? */ + PROC_SUNLOCK(p); goto runfast; } /* * The signal is not ignored or caught. */ >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811051523.mA5FN4df012681>