Date: Fri, 15 Apr 2005 17:59:22 GMT From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 75260 for review Message-ID: <200504151759.j3FHxM5b088220@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=75260 Change 75260 by peter@peter_overcee on 2005/04/15 17:59:11 IFC @75254 Affected files ... .. //depot/projects/hammer/bin/sh/sh.1#15 integrate .. //depot/projects/hammer/lib/libc/net/getaddrinfo.c#20 integrate .. //depot/projects/hammer/lib/libc/net/gethostbydns.c#10 integrate .. //depot/projects/hammer/lib/libc/net/res_query.c#5 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#91 integrate .. //depot/projects/hammer/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml#12 integrate .. //depot/projects/hammer/sbin/idmapd/idmapd.c#6 integrate .. //depot/projects/hammer/share/man/man9/Makefile#51 integrate .. //depot/projects/hammer/share/man/man9/taskqueue.9#9 integrate .. //depot/projects/hammer/sys/conf/options.i386#32 integrate .. //depot/projects/hammer/sys/conf/options.pc98#29 integrate .. //depot/projects/hammer/sys/dev/ata/ata-all.c#46 integrate .. //depot/projects/hammer/sys/dev/ata/ata-all.h#27 integrate .. //depot/projects/hammer/sys/dev/ata/ata-disk.c#30 integrate .. //depot/projects/hammer/sys/dev/ata/atapi-cam.c#19 integrate .. //depot/projects/hammer/sys/dev/ata/atapi-cd.c#26 integrate .. //depot/projects/hammer/sys/dev/ata/atapi-fd.c#13 integrate .. //depot/projects/hammer/sys/dev/ata/atapi-tape.c#16 integrate .. //depot/projects/hammer/sys/dev/pci/pci.c#39 integrate .. //depot/projects/hammer/sys/i386/acpica/madt.c#14 integrate .. //depot/projects/hammer/sys/i386/conf/NOTES#66 integrate .. //depot/projects/hammer/sys/i386/i386/io_apic.c#15 integrate .. //depot/projects/hammer/sys/i386/i386/machdep.c#50 integrate .. //depot/projects/hammer/sys/i386/i386/mptable.c#19 integrate .. //depot/projects/hammer/sys/i386/include/apicvar.h#12 integrate .. //depot/projects/hammer/sys/i386/pci/pci_pir.c#8 integrate .. //depot/projects/hammer/sys/ia64/ia64/mp_machdep.c#11 integrate .. //depot/projects/hammer/sys/kern/sched_4bsd.c#36 integrate .. //depot/projects/hammer/sys/net/if.c#44 integrate .. //depot/projects/hammer/sys/netgraph/ng_echo.c#4 integrate .. //depot/projects/hammer/sys/netinet/ip_fw2.c#52 integrate .. //depot/projects/hammer/sys/netinet/tcp_input.c#47 integrate .. //depot/projects/hammer/sys/netinet/tcp_sack.c#12 integrate .. //depot/projects/hammer/sys/netinet/tcp_var.h#26 integrate .. //depot/projects/hammer/sys/pc98/conf/NOTES#40 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/machdep.c#40 integrate .. //depot/projects/hammer/sys/sys/ata.h#10 integrate .. //depot/projects/hammer/tools/regression/usr.bin/printf/regress.m1.out#2 integrate .. //depot/projects/hammer/tools/regression/usr.bin/printf/regress.sh#2 integrate .. //depot/projects/hammer/usr.bin/printf/printf.1#6 integrate Differences ... ==== //depot/projects/hammer/bin/sh/sh.1#15 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 -.\" $FreeBSD: src/bin/sh/sh.1,v 1.99 2005/03/04 13:16:50 keramida Exp $ +.\" $FreeBSD: src/bin/sh/sh.1,v 1.100 2005/04/15 14:53:29 keramida Exp $ .\" .Dd July 3, 2004 .Dt SH 1 @@ -196,6 +196,12 @@ Enable asynchronous notification of background job completion. (UNIMPLEMENTED) +.It Fl c Li string +Read commands from the +.Ar string +operand instead of from the standard input. +Keep in mind that this option only accepts a single string as its +argument, hence multi-word strings must be quoted. .It Fl C Li noclobber Do not overwrite existing files with .Dq Li > . @@ -303,13 +309,6 @@ .El .Pp The -.Fl c -option may be used to pass its string argument to the shell -to be interpreted as input. -Keep in mind that this option only accepts a single string as its -argument, hence multi-word strings must be quoted. -.Pp -The .Fl /+o option takes as its only argument the long name of an option to be enabled or disabled. @@ -1643,9 +1642,9 @@ .Pp The following environment variables affect the execution of .Ic fc : -.Bl -tag -width indent +.Bl -tag -width ".Ev HISTSIZE" .It Ev FCEDIT -Name of the editor to use. +Name of the editor to use for history editing. .It Ev HISTSIZE The number of previous commands that are accessible. .El @@ -2051,12 +2050,86 @@ Otherwise the shell will return the exit status of the last command executed, or if the exit builtin is used with a numeric argument, it will return the argument. +.Sh ENVIRONMENT +The following environment variables affect the execution of +.Nm : +.Bl -tag -width ".Ev HISTSIZE" +.It Ev CDPATH +The search path used with the +.Ic cd +built-in. +.It Ev EDITOR +The fallback editor used with the +.Ic fc +built-in. +If not set, the default editor is +.Xr ed 1 . +.It Ev FCEDIT +The default editor used with the +.Ic fc +built-in. +.It Ev HISTSIZE +The number of previous commands that are accessible. +.It Ev HOME +The starting directory of +.Nm . +.It Ev IFS +Input Field Separators. +This is normally set to +.Aq space , +.Aq tab , +and +.Aq newline . +See the +.Sx White Space Splitting +section for more details. +.It Ev MAIL +The name of a mail file, that will be checked for the arrival of new +mail. +Overridden by +.Ev MAILPATH . +.It Ev MAILPATH +A colon +.Pq Ql \&: +separated list of file names, for the shell to check for incoming +mail. +This environment setting overrides the +.Ev MAIL +setting. +There is a maximum of 10 mailboxes that can be monitored at once. +.It Ev PATH +The default search path for executables. +See the +.Sx Path Search +section for details. +.It Ev PS1 +The primary prompt string, which defaults to +.Dq $ \ , +unless you are the superuser, in which case it defaults to +.Dq # \ . +.It Ev PS2 +The secondary prompt string, which defaults to +.Dq \*[Gt] \ . +.It Ev TERM +The default terminal setting for the shell. +This is inherited by children of the shell, and is used in the history +editing modes. +.El .Sh SEE ALSO .Xr builtin 1 , +.Xr chsh 1 , .Xr echo 1 , +.Xr ed 1 , +.Xr emacs 1 , .Xr expr 1 , +.Xr getopt 1 , .Xr pwd 1 , -.Xr test 1 +.Xr test 1 , +.Xr umask 2 , +.Xr vi 1 , +.Xr execve 2 , +.Xr getrlimit 2 , +.Xr editrc 5 .Sh HISTORY A .Nm ==== //depot/projects/hammer/lib/libc/net/getaddrinfo.c#20 (text+ko) ==== @@ -63,7 +63,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/net/getaddrinfo.c,v 1.63 2005/04/14 11:44:43 ume Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/net/getaddrinfo.c,v 1.64 2005/04/15 14:42:29 ume Exp $"); #include "namespace.h" #include "reentrant.h" @@ -2283,7 +2283,7 @@ /* resolver logic */ -extern const char *__hostalias(const char *); +extern const char *_res_hostalias(const char *, char *, size_t); /* * Formulate a normal query, send, and await answer. @@ -2418,6 +2418,7 @@ u_int dots; int trailing_dot, ret, saved_herrno; int got_nodata = 0, got_servfail = 0, tried_as_is = 0; + char abuf[MAXDNAME]; if ((_res.options & RES_INIT) == 0 && res_init() == -1) { h_errno = NETDB_INTERNAL; @@ -2436,7 +2437,7 @@ /* * if there aren't any dots, it could be a user-level alias */ - if (!dots && (cp = __hostalias(name)) != NULL) + if (!dots && (cp = _res_hostalias(name, abuf, sizeof(abuf))) != NULL) return (res_queryN(cp, target)); /* ==== //depot/projects/hammer/lib/libc/net/gethostbydns.c#10 (text+ko) ==== @@ -58,7 +58,7 @@ static char fromrcsid[] = "From: Id: gethnamaddr.c,v 8.23 1998/04/07 04:59:46 vixie Exp $"; #endif /* LIBC_SCCS and not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/net/gethostbydns.c,v 1.46 2004/07/21 17:26:40 ume Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/net/gethostbydns.c,v 1.47 2005/04/15 14:42:29 ume Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -96,6 +96,8 @@ static char hostbuf[8*1024]; static u_char host_addr[16]; /* IPv4 or IPv6 */ +extern const char *_res_hostalias(const char *, char *, size_t); + #ifdef RESOLVSORT static void addrsort(char **, int); #endif @@ -477,6 +479,7 @@ const char *cp; char *bp, *ep; int n, size, type, len; + char abuf[MAXDNAME]; name = va_arg(ap, const char *); af = va_arg(ap, int); @@ -510,7 +513,8 @@ * this is also done in res_query() since we are not the only * function that looks up host names. */ - if (!strchr(name, '.') && (cp = __hostalias(name))) + if (!strchr(name, '.') && + (cp = _res_hostalias(name, abuf, sizeof abuf))) name = cp; /* ==== //depot/projects/hammer/lib/libc/net/res_query.c#5 (text+ko) ==== @@ -73,7 +73,7 @@ static char rcsid[] = "$Id: res_query.c,v 8.14 1997/06/09 17:47:05 halley Exp $"; #endif /* LIBC_SCCS and not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/lib/libc/net/res_query.c,v 1.29 2004/04/21 09:50:52 ru Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/net/res_query.c,v 1.30 2005/04/15 14:42:29 ume Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -97,6 +97,8 @@ #define MAXPACKET 1024 #endif +const char *_res_hostalias(const char *, char *, size_t); + /* * Formulate a normal query, send, and await answer. * Returned answer is placed in supplied buffer "answer". @@ -193,6 +195,7 @@ int anslen; /* size of answer */ { const char *cp, * const *domain; + char tmp[MAXDNAME]; u_int dots; int trailing_dot, ret, saved_herrno; int got_nodata = 0, got_servfail = 0, tried_as_is = 0; @@ -211,7 +214,7 @@ trailing_dot++; /* If there aren't any dots, it could be a user-level alias */ - if (!dots && (cp = hostalias(name)) != NULL) + if (!dots && (cp = _res_hostalias(name, tmp, sizeof tmp)) != NULL) return (res_query(cp, class, type, answer, anslen)); /* @@ -384,14 +387,11 @@ } const char * -hostalias(name) - const char *name; +_res_hostalias(const char *name, char *dst, size_t siz) { - char *cp1, *cp2; + char *file, *cp1, *cp2; + char buf[BUFSIZ]; FILE *fp; - char *file; - char buf[BUFSIZ]; - static char abuf[MAXDNAME]; if (_res.options & RES_NOALIASES) return (NULL); @@ -413,18 +413,28 @@ ; if (!*cp1) break; - for (cp2 = cp1 + 1; *cp2 && !isspace((unsigned char)*cp2); ++cp2) + for (cp2 = cp1 + 1; *cp2 && + !isspace((unsigned char)*cp2); ++cp2) ; - abuf[sizeof(abuf) - 1] = *cp2 = '\0'; - strncpy(abuf, cp1, sizeof(abuf) - 1); + *cp2 = '\0'; + strncpy(dst, cp1, siz - 1); + dst[siz - 1] = '\0'; fclose(fp); - return (abuf); + return (dst); } } fclose(fp); return (NULL); } +const char * +hostalias(const char *name) +{ + static char abuf[MAXDNAME]; + + return (_res_hostalias(name, abuf, sizeof abuf)); +} + /* * Weak aliases for applications that use certain private entry points, * and fail to include <resolv.h>. ==== //depot/projects/hammer/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#91 (text+ko) ==== @@ -3,7 +3,7 @@ <corpauthor>The &os; Project</corpauthor> - <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.843 2005/04/06 19:58:22 hrs Exp $</pubdate> + <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.844 2005/04/15 14:27:26 simon Exp $</pubdate> <copyright> <year>2000</year> @@ -150,6 +150,12 @@ <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:03.amd64.asc">FreeBSD-SA-05:03.amd64</ulink>. &merged;</para> + <para>An information leak vulnerability in the + <literal>SIOCGIFCONF</literal> &man.ioctl.2;, which leaked 12 + bytes of kernel memory, has been fixed. More details are in security advisory + <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:04.ifconf.asc">FreeBSD-SA-05:04.ifconf</ulink>. + &merged;</para> + </sect2> <sect2 id="kernel"> ==== //depot/projects/hammer/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml#12 (text+ko) ==== @@ -1,9 +1,9 @@ <!-- The FreeBSD Russian Documentation Project - $FreeBSDru: frdp/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml,v 1.25 2005/03/22 07:45:00 den Exp $ + $FreeBSDru: frdp/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml,v 1.27 2005/04/15 13:13:30 den Exp $ - Original revision: 1.832 + Original revision: 1.843 --> <articleinfo> @@ -11,7 +11,7 @@ <corpauthor>Проект &os;</corpauthor> - <pubdate>$FreeBSD: src/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml,v 1.16 2005/03/22 07:43:31 den Exp $</pubdate> + <pubdate>$FreeBSD: src/release/doc/ru_RU.KOI8-R/relnotes/common/new.sgml,v 1.18 2005/04/15 13:11:53 den Exp $</pubdate> <copyright> <year>2000</year> @@ -109,7 +109,7 @@ <para>Обычно в информации о релизе последовательно включены последние сообщения безопасности, выпущенные после - &release.prev.historic;, информация о поддержки новых драйверов или + &release.prev.historic;, информация о поддержке новых драйверов или оборудования, новых команд или параметров, информация о основных исправлениях ошибок, или обновлениях стороннего программного обеспечения. В нем могут также перечисляться изменения важнейших @@ -135,6 +135,30 @@ <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:17.procfs.asc">FreeBSD-SA-04:17.procfs</ulink>. &merged;</para> + <para>В клиенте TELNET были исправлены две ошибки переполнения буфера. + Они могут позволить злонамеренному серверу TELNET или активному + атакующему в сети между клиентом и сервером заставить + &man.telnet.1; выполнить произвольный код с привилегиями пользователя, + запустившего клиент. + За дальнейшей информацией обращайтесь к сообщению безопасности + <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:01.telnet.asc">FreeBSD-SA-05:01.telnet</ulink>. + &merged;</para> + + <para>В системном вызове &man.sendfile.2; была исправлена ошибка, + связанная с раскрытием информации, которая могла позволить передачу + произвольных частей памяти ядра. + За дальнейшей информацией обращайтесь к сообщению безопасности + <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:02.sendfile.asc">FreeBSD-SA-05:02.sendfile</ulink>. + &merged;</para> + + <para>Было исправлено возможное расширение привилегий в &os;/amd64. + Ошибка позволяла непривилегированным пользователям получать прямой + доступ к некоторому оборудованию, доступ к которому не мог быть + получен без соответствующего уровня привилегий. + За дальнейшей информацией обращайтесь к сообщению безопасности + <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:03.amd64.asc">FreeBSD-SA-05:03.amd64</ulink>. + &merged;</para> + </sect2> <sect2 id="kernel"> @@ -160,7 +184,7 @@ <username>root</username> внутри jail и вне jail не делается. &merged;</para> - <para arch="alpha,amd64,i386">Переменная загрузчика + <para arch="alpha,amd64,i386,sparc64">Переменная загрузчика <varname>debug.mpsafevm</varname> была включена по умолчанию. &merged;</para> @@ -379,6 +403,9 @@ <para>Драйвер &man.bge.4; теперь поддерживает инфраструктуру &man.altq.4;.</para> + <para>Был добавлен USB Communication Device Class Ethernet + драйвер &man.cdce.4;. &merged;</para> + <para>Драйвер &man.cp.4; теперь MPSAFE. &merged;</para> <para>Драйвер &man.ctau.4; теперь MPSAFE. &merged;</para> @@ -405,6 +432,8 @@ <para>Драйвер &man.hme.4; теперь MPSAFE. &merged;</para> + <para>Драйвер &man.ixgb.4; теперь MPSAFE.</para> + <para arch="amd64">Конвертер драйверов устройств &man.ndis.4; теперь поддерживает бинарные файлы &windows;/x86-64 на системах amd64. &merged;</para> @@ -442,6 +471,9 @@ (или компиляция) модуля <filename>wlan_wep</filename> в ядро.</para> + <para>Драйвер &man.xl.4; теперь поддерживает + &man.polling.4;.</para> + </sect4> </sect3> @@ -563,6 +595,10 @@ <para>Драйвер &man.amr.4; теперь может безопасно использоваться на системах с &man.pae.4;. &merged;</para> + <para arch="i386,ia64">Был добавлен драйвер &man.arcmsr.4;. + Он поддерживает контроллеры SATA RAID серий Areca ARC-11<replaceable>xx</replaceable> + и ARC-12<replaceable>xx</replaceable>. &merged;</para> + <para>Был добавлен класс SHSEC GEOM. Он предоставлен для разделения секретного ключа (<quote>secret</quote>) между несколькими провайдерами GEOM. Все эти провайдеры @@ -680,12 +716,20 @@ <para>Дисковый формат файлов <literal>LC_CTYPE</literal> был изменен к машино-независимому виду.</para> + <para>Была исправлена ошибка в библиотеке <filename>libalias</filename>, + приводившая к дампу памяти при указании в &man.natd.8; + опции <option>-reverse</option>.</para> + <para>Библиотека <filename>libarchive</filename> (как и команда &man.tar.1;, ее использующая) теперь поддерживает чтение образов ISO (с опциональным расширением RockRidge) и архивов ZIP (со сжатием <literal>deflate</literal> и <literal>none</literal>). &merged;</para> + <para>Библиотека <filename>libarchive</filename> теперь поддерживает + ZIP архивы с вхождениями более 4GB в упакованном виде (расширение + ZIP64) и расширение Unix.</para> + <para>Была добавлена библиотека <filename>libgpib</filename>, чтобы предоставить доступ уровня пользователя к устройствам GPIB (используя драйвер pcii) через @@ -837,6 +881,13 @@ <para>Утилиты &man.rescue.8; в каталоге <filename>/rescue</filename> теперь включают &man.bsdtar.1; вместо GNU tar.</para> + <para>Утилита &man.restore.8; опять может читать ленты с дампами + &os; версии 1.</para> + + <para>Была исправлена ошибка в утилите &man.rexecd.8;, из-за + которой считалось, что опция <option>-i</option> всегда + указана. &merged;</para> + <para>Утилита &man.rm.1; теперь поддерживает параметр <option>-I</option>, с которым (однократно) запрашивается подтверждение при рекурсивном удалении каталогов или @@ -913,7 +964,7 @@ <para>Была исправлена ошибка чтения файлов конфигурации, таких как &man.hosts.5;, &man.services.5; и так далее, которые - не заканчивались символом новой строки.</para> + не заканчивались символом новой строки. &merged;</para> <sect3 id="rc-scripts"> <title>Скрипты <filename>/etc/rc.d</filename></title> @@ -957,7 +1008,7 @@ <title>Стороннее программное обеспечение</title> <para><application>BIND</application> был обновлен с версии - 9.3.0 до версии 9.3.1.</para> + 9.3.0 до версии 9.3.1. &merged;</para> <para><application>FILE</application> был обновлен с 4.10 до 4.12.</para> @@ -1045,7 +1096,10 @@ как установку с этого диска, так и восстановление после сбоев. (На ia64, live filesystem находится на отдельном диске, поскольку не умещается на первый). Пакеты помещаются - на отдельный диск. &merged;</para> + на отдельный диск; в частности, образ <filename>disc2</filename> + содержит общеиспользуемые пакеты, такие как десктоп-приложения. + Документы Проекта документирования &os; также помещаются на + <filename>disc2</filename>. &merged;</para> <para>Поддерживаемая версия десктопа <application>GNOME</application> была обновлена с @@ -1112,7 +1166,7 @@ &man.inet6.rth.space.3;, &man.inet6.rthdr.space.3;, &man.icmp6.4; и - &man.ip6.4;.</para> + &man.ip6.4;. &merged;</para> </sect2> ==== //depot/projects/hammer/sbin/idmapd/idmapd.c#6 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sbin/idmapd/idmapd.c,v 1.5 2004/04/15 16:12:12 rees Exp $ */ +/* $FreeBSD: src/sbin/idmapd/idmapd.c,v 1.6 2005/04/14 20:27:30 rees Exp $ */ /* $Id: idmapd.c,v 1.5 2003/11/05 14:58:58 rees Exp $ */ /* @@ -339,12 +339,6 @@ TAILQ_INIT(&upcall_q); - if (error) { - perror("sigaction"); - exit(1); - } - - fd = open(DEV_PATH, O_RDWR, S_IRUSR | S_IWUSR); if (fd < 0) { ==== //depot/projects/hammer/share/man/man9/Makefile#51 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/man/man9/Makefile,v 1.256 2005/04/09 18:38:54 pjd Exp $ +# $FreeBSD: src/share/man/man9/Makefile,v 1.257 2005/04/15 10:57:34 pjd Exp $ MAN= accept_filter.9 \ accf_data.9 \ @@ -795,11 +795,16 @@ runqueue.9 procrunnable.9 \ runqueue.9 remrunqueue.9 \ runqueue.9 setrunqueue.9 -MLINKS+=sbuf.9 sbuf_cat.9 \ +MLINKS+=sbuf.9 sbuf_bcat.9 \ + sbuf.9 sbuf_bcopyin.9 \ + sbuf.9 sbuf_bcpy.9 \ + sbuf.9 sbuf_cat.9 \ sbuf.9 sbuf_clear.9 \ + sbuf.9 sbuf_copyin.9 \ sbuf.9 sbuf_cpy.9 \ sbuf.9 sbuf_data.9 \ sbuf.9 sbuf_delete.9 \ + sbuf.9 sbuf_done.9 \ sbuf.9 sbuf_finish.9 \ sbuf.9 sbuf_len.9 \ sbuf.9 sbuf_new.9 \ ==== //depot/projects/hammer/share/man/man9/taskqueue.9#9 (text+ko) ==== @@ -26,7 +26,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/taskqueue.9,v 1.14 2005/01/12 21:48:25 ru Exp $ +.\" $FreeBSD: src/share/man/man9/taskqueue.9,v 1.15 2005/04/15 14:46:59 jkoshy Exp $ .\" .Dd May 12, 2000 .Dt TASKQUEUE 9 @@ -231,6 +231,10 @@ that need to call kernel functions that do things that can only be done from a thread context. (e.g., call malloc with the M_WAITOK flag.) +.Sh SEE ALSO +.Xr ithread 9 , +.Xr kthread 9 , +.Xr swi 9 .Sh HISTORY This interface first appeared in .Fx 5.0 . ==== //depot/projects/hammer/sys/conf/options.i386#32 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.i386,v 1.218 2005/03/17 01:20:49 cognet Exp $ +# $FreeBSD: src/sys/conf/options.i386,v 1.219 2005/04/14 17:59:57 jhb Exp $ # Options specific to the i386 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -9,7 +9,6 @@ I586_PMC_GUPROF opt_i586_guprof.h MAXMEM MPTABLE_FORCE_HTT -NO_MIXED_MODE PERFMON PMAP_SHPGPERPROC opt_pmap.h POWERFAIL_NMI opt_trap.h ==== //depot/projects/hammer/sys/conf/options.pc98#29 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.pc98,v 1.182 2005/02/04 15:29:54 nyan Exp $ +# $FreeBSD: src/sys/conf/options.pc98,v 1.183 2005/04/15 14:24:49 nyan Exp $ # Options specific to the pc98 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -8,7 +8,6 @@ I586_PMC_GUPROF opt_i586_guprof.h MAXMEM MPTABLE_FORCE_HTT -NO_MIXED_MODE PERFMON PMAP_SHPGPERPROC opt_pmap.h POWERFAIL_NMI opt_trap.h ==== //depot/projects/hammer/sys/dev/ata/ata-all.c#46 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.239 2005/04/08 09:37:47 sos Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.241 2005/04/15 14:19:41 sos Exp $"); #include "opt_ata.h" #include <sys/param.h> @@ -68,7 +68,8 @@ /* prototypes */ static void ata_interrupt(void *); static void ata_boot_attach(void); -device_t ata_add_child(driver_t *driver, device_t parent, struct ata_device *atadev, const char *name, int unit); +device_t ata_add_child(device_t parent, struct ata_device *atadev, int unit); +static int ata_identify(device_t dev); /* global vars */ MALLOC_DEFINE(M_ATA, "ATA generic", "ATA driver generic layer"); @@ -147,8 +148,7 @@ return 0; /* probe and attach devices on this channel */ - bus_generic_probe(dev); - bus_generic_attach(dev); + ata_identify(dev); return 0; } @@ -171,9 +171,6 @@ free(children, M_TEMP); } - /* fail outstanding requests on this channel (SOS shouldn't be any XXX ) */ - ata_fail_requests(ch, NULL); - /* release resources */ bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); @@ -558,8 +555,7 @@ /* kick of probe and attach on all channels */ for (ctlr = 0; ctlr < devclass_get_maxunit(ata_devclass); ctlr++) { if ((ch = devclass_get_softc(ata_devclass, ctlr))) { - bus_generic_probe(ch->dev); - bus_generic_attach(ch->dev); + ata_identify(ch->dev); } } } @@ -568,16 +564,14 @@ * misc support functions */ device_t -ata_add_child(driver_t *driver, device_t parent, struct ata_device *atadev, - const char *name, int unit) +ata_add_child(device_t parent, struct ata_device *atadev, int unit) { struct ata_channel *ch = device_get_softc(parent); device_t child; - if ((child = device_add_child(parent, name, unit))) { + if ((child = device_add_child(parent, NULL, unit))) { char buffer[64]; - device_set_driver(child, driver); device_set_softc(child, atadev); sprintf(buffer, "%.40s/%.8s", atadev->param.model, atadev->param.revision); @@ -586,7 +580,7 @@ atadev->dev = child; atadev->max_iosize = DEV_BSIZE; atadev->mode = ATA_PIO_MAX; - if ((atadev->param.config & ATA_PROTO_MASK) == ATA_PROTO_ATAPI_12) { + if (atadev->param.config & ATA_PROTO_ATAPI) { if (atapi_dma && ch->dma && (atadev->param.config & ATA_DRQ_MASK) != ATA_DRQ_INTR && ata_umode(&atadev->param) >= ATA_UDMA2) @@ -600,30 +594,30 @@ return child; } -void -ata_identify(driver_t *driver, device_t parent, int type, const char *name) +static int +ata_identify(device_t dev) { - struct ata_channel *ch = device_get_softc(parent); + struct ata_channel *ch = device_get_softc(dev); struct ata_device *master, *slave; int master_res = EIO, slave_res = EIO, master_unit = -1, slave_unit = -1; if (!(master = malloc(sizeof(struct ata_device), M_ATA, M_NOWAIT | M_ZERO))) { - device_printf(parent, "out of memory\n"); - return; + device_printf(dev, "out of memory\n"); + return ENOMEM; } master->unit = ATA_MASTER; if (!(slave = malloc(sizeof(struct ata_device), M_ATA, M_NOWAIT | M_ZERO))) { free(master, M_ATA); - device_printf(parent, "out of memory\n"); - return; + device_printf(dev, "out of memory\n"); + return ENOMEM; } slave->unit = ATA_SLAVE; /* wait for the channel to be IDLE then grab it before touching HW */ - while (ATA_LOCKING(parent, ATA_LF_LOCK) != ch->unit) - tsleep(ch, PRIBIO, "ataidnt2", 1); + while (ATA_LOCKING(dev, ATA_LF_LOCK) != ch->unit) + tsleep(ch, PRIBIO, "ataidnt1", 1); while (1) { mtx_lock(&ch->state_mtx); if (ch->state == ATA_IDLE) { @@ -632,40 +626,41 @@ break; } mtx_unlock(&ch->state_mtx); - tsleep(ch, PRIBIO, "ataidnt1", 1); + tsleep(ch, PRIBIO, "ataidnt2", 1); } - if (type < 0) { - if (ch->devices & ATA_ATA_SLAVE) - slave_res = ata_getparam(parent, slave, ATA_ATA_IDENTIFY); - if (ch->devices & ATA_ATA_MASTER) - master_res = ata_getparam(parent, master, ATA_ATA_IDENTIFY); + if (ch->devices & ATA_ATA_SLAVE) { + slave_res = ata_getparam(dev, slave, ATA_ATA_IDENTIFY); #ifdef ATA_STATIC_ID - master_unit = (device_get_unit(parent) << 1); - slave_unit = (device_get_unit(parent) << 1) + 1; + slave_unit = (device_get_unit(dev) << 1) + 1; #endif } - else { - if (ch->devices & ATA_ATAPI_SLAVE) - slave_res = ata_getparam(parent, slave, ATA_ATAPI_IDENTIFY); - if (ch->devices & ATA_ATAPI_MASTER) - master_res = ata_getparam(parent, master, ATA_ATAPI_IDENTIFY); + else if (ch->devices & ATA_ATAPI_SLAVE) + slave_res = ata_getparam(dev, slave, ATA_ATAPI_IDENTIFY); + + if (ch->devices & ATA_ATA_MASTER) { + master_res = ata_getparam(dev, master, ATA_ATA_IDENTIFY); +#ifdef ATA_STATIC_ID + master_unit = (device_get_unit(dev) << 1); +#endif } + else if (ch->devices & ATA_ATAPI_MASTER) + master_res = ata_getparam(dev, master, ATA_ATAPI_IDENTIFY); - if (master_res || - !(type < 0 || (master->param.config & ATA_ATAPI_TYPE_MASK) == type) || - !ata_add_child(driver, parent, master, name, master_unit)) + if (master_res || !ata_add_child(dev, master, master_unit)) free(master, M_ATA); - if (slave_res || - !(type < 0 || (slave->param.config & ATA_ATAPI_TYPE_MASK) == type) || - !ata_add_child(driver, parent, slave, name, slave_unit)) + if (slave_res || !ata_add_child(dev, slave, slave_unit)) free(slave, M_ATA); mtx_lock(&ch->state_mtx); ch->state = ATA_IDLE; mtx_unlock(&ch->state_mtx); - ATA_LOCKING(parent, ATA_LF_UNLOCK); + ATA_LOCKING(dev, ATA_LF_UNLOCK); + + bus_generic_probe(dev); + bus_generic_attach(dev); + return 0; } void ==== //depot/projects/hammer/sys/dev/ata/ata-all.h#27 (text+ko) ==== @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.92 2005/04/14 08:48:45 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.93 2005/04/15 10:20:51 sos Exp $ */ /* ATA register defines */ @@ -452,7 +452,6 @@ int ata_reinit(device_t dev); int ata_suspend(device_t dev); int ata_resume(device_t dev); -void ata_identify(driver_t *driver, device_t parent, int type, const char *name); void ata_default_registers(struct ata_channel *ch); void ata_udelay(int interval); char *ata_mode2str(int mode); ==== //depot/projects/hammer/sys/dev/ata/ata-disk.c#30 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.184 2005/03/31 15:05:40 sos Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.185 2005/04/15 10:20:51 sos Exp $"); #include "opt_ata.h" #include <sys/param.h> @@ -66,16 +66,15 @@ /* local vars */ static MALLOC_DEFINE(M_AD, "AD driver", "ATA disk driver"); -static void -ad_identify(driver_t *driver, device_t parent) -{ - ata_identify(driver, parent, -1, "ad"); -} - static int ad_probe(device_t dev) { - return 0; + struct ata_device *atadev = device_get_softc(dev); + + if (!(atadev->param.config & ATA_PROTO_ATAPI)) + return 0; + else + return ENXIO; } static int @@ -93,8 +92,6 @@ if (!(adp = malloc(sizeof(struct ad_softc), M_AD, M_NOWAIT | M_ZERO))) { device_printf(dev, "out of memory\n"); - device_set_softc(dev, NULL); - free(atadev, M_ATA); return ENOMEM; } device_set_ivars(dev, adp); @@ -161,7 +158,6 @@ ad_detach(device_t dev) { struct ata_channel *ch = device_get_softc(device_get_parent(dev)); - struct ata_device *atadev = device_get_softc(dev); struct ad_softc *adp = device_get_ivars(dev); device_t *children; int nchildren, i; @@ -187,8 +183,6 @@ /* dont leave anything behind */ device_set_ivars(dev, NULL); free(adp, M_AD); - device_set_softc(dev, NULL); - free(atadev, M_ATA); return 0; } @@ -419,7 +413,6 @@ static device_method_t ad_methods[] = { /* device interface */ - DEVMETHOD(device_identify, ad_identify), DEVMETHOD(device_probe, ad_probe), DEVMETHOD(device_attach, ad_attach), DEVMETHOD(device_detach, ad_detach), @@ -439,22 +432,6 @@ devclass_t ad_devclass; -static int -ad_modevent(module_t mod, int what, void *arg) -{ - device_t *devs; - int ndevs, i; - - if (what == MOD_UNLOAD) { - if (!devclass_get_devices(ad_devclass, &devs, &ndevs) && devs) { - for (i = 0; i < ndevs; i++) - device_delete_child(device_get_parent(devs[i]), devs[i]); - free(devs, M_TEMP); - } - } - return 0; -} - -DRIVER_MODULE(ad, ata, ad_driver, ad_devclass, ad_modevent, NULL); +DRIVER_MODULE(ad, ata, ad_driver, ad_devclass, NULL, NULL); MODULE_VERSION(ad, 1); MODULE_DEPEND(ad, ata, 1, 1, 1); ==== //depot/projects/hammer/sys/dev/ata/atapi-cam.c#19 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.39 2005/04/08 22:51:50 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.40 2005/04/15 10:20:51 sos Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -90,7 +90,7 @@ enum reinit_reason { BOOT_ATTACH, ATTACH, RESET }; /* Device methods */ -static int atapi_cam_identify(device_t *dev, device_t parent); +static void atapi_cam_identify(device_t *dev, device_t parent); static int atapi_cam_probe(device_t dev); static int atapi_cam_attach(device_t dev); static int atapi_cam_detach(device_t dev); @@ -102,6 +102,9 @@ static void atapi_async(void *, u_int32_t, struct cam_path *, void *); static void atapi_cb(struct ata_request *); +/* Module methods */ +static int atapi_cam_event_handler(module_t mod, int what, void *arg); + /* internal functions */ static void reinit_bus(struct atapi_xpt_softc *scp, enum reinit_reason reason); static void setup_async_cb(struct atapi_xpt_softc *, uint32_t); @@ -130,24 +133,52 @@ }; >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200504151759.j3FHxM5b088220>