From owner-svn-src-user@FreeBSD.ORG Mon Oct 27 05:19:26 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 652D31065670; Mon, 27 Oct 2008 05:19:26 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 536C08FC0A; Mon, 27 Oct 2008 05:19:26 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9R5JQC4026115; Mon, 27 Oct 2008 05:19:26 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9R5JQed026113; Mon, 27 Oct 2008 05:19:26 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810270519.m9R5JQed026113@svn.freebsd.org> From: Kip Macy Date: Mon, 27 Oct 2008 05:19:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184320 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Oct 2008 05:19:26 -0000 Author: kmacy Date: Mon Oct 27 05:19:26 2008 New Revision: 184320 URL: http://svn.freebsd.org/changeset/base/184320 Log: Generalize the flowtable code support ipv6, host route caching, and pcpu tables Added: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.h (contents, props changed) Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Mon Oct 27 02:36:03 2008 (r184319) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Mon Oct 27 05:19:26 2008 (r184320) @@ -16,9 +16,14 @@ #include #include +#include +#include +#include #include #include +#include +#include #include #include #include @@ -172,59 +177,141 @@ uint32_t initval) /* the } -struct ip_tuple { +struct ipv4_tuple { + uint16_t ip_sport; /* source port */ + uint16_t ip_dport; /* destination port */ in_addr_t ip_saddr; /* source address */ in_addr_t ip_daddr; /* destination address */ +}; + +union ipv4_flow { + struct ipv4_tuple ipf_ipt; + uint32_t ipf_key[3]; +}; + +struct ipv6_tuple { uint16_t ip_sport; /* source port */ uint16_t ip_dport; /* destination port */ + struct in6_addr ip_saddr; /* source address */ + struct in6_addr ip_daddr; /* destination address */ }; -union ip_flow { - struct ip_tuple ipf_ipt; - uint32_t ipf_key[3]; +union ipv6_flow { + struct ipv6_tuple ipf_ipt; + uint32_t ipf_key[9]; +}; + +struct flentry { + uint32_t f_fhash; /* hash flowing forward */ + uint16_t f_flags; /* flow flags */ + uint8_t f_pad; + uint8_t f_proto; /* protocol */ + time_t f_uptime; /* last time this flow was accessed */ + struct rtentry *f_rt; /* rtentry for flow */ + u_char f_desten[ETHER_ADDR_LEN]; }; struct flentry_v4 { - uint32_t fl_fhash; /* hash flowing forward */ - uint32_t fl_ticks; /* last time this flow was accessed */ - uint16_t fl_flags; /* flow flags */ - uint8_t fl_pad; - uint8_t fl_proto; /* protocol */ - union ip_flow fl_flow; - struct rtentry *fl_rt; /* rtentry for flow */ - uint32_t fl_refcnt; - uint32_t fl_hash_next; /* needed for GC */ - uint32_t fl_hash_prev; + struct flentry fl_entry; + union ipv4_flow fl_flow; }; -#define TICKS_PER_MINUTE (60*hz) -#define TICKS_PER_HOUR (60*TICKS_PER_MINUTE) -#define TICKS_PER_DAY (24*TICKS_PER_HOUR) - - -#define SYN_IDLE (5*TICKS_PER_MINUTE) -#define UDP_IDLE (5*TICKS_PER_MINUTE) -#define FIN_WAIT_IDLE (10*TICKS_PER_MINUTE) -#define TCP_IDLE TICKS_PER_DAY - - -static struct flentry_v4 *ipv4_flow_table; -static int ipv4_flow_table_size; -static bitstr_t *ipv4_flow_bitstring; -static int ipv4_flow_allocated; -struct mtx *ipv4_flow_locks; -static int ipv4_flow_lock_count; -extern uint32_t hashjitter; -static uint32_t ipv4_flow_route_lookup_fail; -static uint32_t ipv4_flow_collisions; -struct callout ipv4_flow_callout; -static int ipv4_flow_max_count; - - -#define FL_ENTRY_INDEX(hash)((hash) % ipv4_flow_table_size) -#define FL_ENTRY(hash) (&ipv4_flow_table[FL_ENTRY_INDEX((hash))]) -#define FL_ENTRY_LOCK(hash) mtx_lock(&ipv4_flow_locks[(hash)&(ipv4_flow_lock_count - 1)]) -#define FL_ENTRY_UNLOCK(hash) mtx_lock(&ipv4_flow_locks[(hash)&(ipv4_flow_lock_count - 1)]) +struct flentry_v6 { + struct flentry fl_entry; + union ipv6_flow fl_flow; +}; + +#define fl_fhash fl_entry.fl_fhash +#define fl_flags fl_entry.fl_flags +#define fl_proto fl_entry.fl_proto +#define fl_uptime fl_entry.fl_uptime +#define fl_rt fl_entry.fl_rt +#define fl_desten fl_entry.fl_desten + +#define SECS_PER_HOUR 3600 +#define SECS_PER_DAY (24*SECS_PER_HOUR) + +#define SYN_IDLE 300 +#define UDP_IDLE 300 +#define FIN_WAIT_IDLE 600 +#define TCP_IDLE SECS_PER_DAY + + +typedef void fl_lock_t(struct flowtable *, uint32_t); +typedef void fl_rtalloc_t(struct route *, uint32_t, u_int); + +union flentryp { + struct flentry_v4 *v4; + struct flentry_v6 *v6; + struct flentry_v4 *v4_pcpu[MAXCPU]; + struct flentry_v6 *v6_pcpu[MAXCPU]; +}; + +struct flowtable { + union flentryp ft_table; + int ft_size; + bitstr_t *ft_masks[MAXCPU]; + struct mtx *ft_locks; + int ft_lock_count; + uint32_t ft_flags; + uint32_t ft_collisions; + uint32_t ft_allocated; + uint64_t ft_hits; + + uint32_t ft_udp_idle; + uint32_t ft_fin_wait_idle; + uint32_t ft_syn_idle; + uint32_t ft_tcp_idle; + + fl_lock_t *ft_lock; + fl_lock_t *ft_unlock; + fl_rtalloc_t *ft_rtalloc; + +}; + +extern uint32_t hashjitter; + +static void +in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fib) +{ + + in_rtalloc_ign(ro, 0, fib); +} + +static void +flowtable_global_lock(struct flowtable *table, uint32_t hash) +{ + int lock_index = (hash)&(table->ft_lock_count - 1); + + mtx_lock(&table->ft_locks[lock_index]); +} + +static void +flowtable_global_unlock(struct flowtable *table, uint32_t hash) +{ + int lock_index = (hash)&(table->ft_lock_count - 1); + + mtx_unlock(&table->ft_locks[lock_index]); +} + +static void +flowtable_pcpu_lock(struct flowtable *table, uint32_t hash) +{ + + critical_enter(); +} + +static void +flowtable_pcpu_unlock(struct flowtable *table, uint32_t hash) +{ + + critical_exit(); +} + +#define FL_ENTRY_INDEX(table, hash)((hash) % (table)->ft_size) +#define FL_ENTRY(table, hash) flowtable_entry((table), (hash)) +#define FL_ENTRY_LOCK(table, hash) (table)->ft_lock((table), (hash)) +#define FL_ENTRY_UNLOCK(table, hash) (table)->ft_unlock((table), (hash)) #define FL_STALE (1<<8) @@ -241,8 +328,9 @@ ipv4_flow_lookup_hash_internal(struct mb struct udphdr *uh; struct sctphdr *sh; - key[0] = ip->ip_src.s_addr; - key[1] = ip->ip_dst.s_addr; + key[0] = 0; + key[1] = ip->ip_src.s_addr; + key[2] = ip->ip_dst.s_addr; sin = (struct sockaddr_in *)&ro->ro_dst; sin->sin_family = AF_INET; @@ -254,7 +342,7 @@ ipv4_flow_lookup_hash_internal(struct mb th = (struct tcphdr *)((caddr_t)ip + iphlen); sport = th->th_sport; dport = th->th_dport; - *flags = th->th_flags; + *flags |= th->th_flags; if (*flags & TH_RST) *flags |= FL_STALE; break; @@ -269,270 +357,272 @@ ipv4_flow_lookup_hash_internal(struct mb dport = sh->dest_port; break; default: + goto noop; /* no port - hence not a protocol we care about */ break;; } - ((uint16_t *)key)[4] = sport; - ((uint16_t *)key)[5] = dport; - *protop = proto; + + /* + * If this is a transmit route cache then + * hash all flows to a given destination to + * the same bucket + */ + if (*flags & FL_LOCAL_XMIT) + proto = sport = dport = 0; + + ((uint16_t *)key)[0] = sport; + ((uint16_t *)key)[1] = dport; + return (hashword(key, 3, hashjitter + proto)); + +noop: + *protop = proto; + return (0); } -uint32_t -ipv4_flow_lookup_hash(struct mbuf *m) +static bitstr_t * +flowtable_mask(struct flowtable *ft) { - struct route ro; - uint32_t key[3]; - uint16_t flags; - uint8_t proto; + bitstr_t *mask; - bzero(&ro, sizeof(ro)); - return (ipv4_flow_lookup_hash_internal(m, &ro, key, &flags, &proto)); + if (ft->ft_flags & FL_PCPU) + mask = ft->ft_masks[curcpu]; + else + mask = ft->ft_masks[0]; + + return (mask); } -static void -ipv4_flow_insert(uint32_t hash, uint32_t *key, uint8_t proto, - struct rtentry *rt, uint16_t flags) +static struct flentry * +flowtable_entry(struct flowtable *ft, uint32_t hash) { - struct flentry_v4 *fle, *fle2; - uint32_t *hashkey; - - fle = FL_ENTRY(hash); - hashkey = fle->fl_flow.ipf_key; - - hashkey[0] = key[0]; - hashkey[1] = key[1]; - hashkey[2] = key[2]; - - bit_set(ipv4_flow_bitstring, FL_ENTRY_INDEX(hash)); - if (rt->rt_flow_head == 0) { - rt->rt_flow_head = hash; - fle->fl_hash_next = fle->fl_hash_prev = 0; + struct flentry *fle; + int index = (ft->ft_size % hash); + + if ((ft->ft_flags & FL_IPV6) == 0) { + if (ft->ft_flags & FL_PCPU) + fle = (struct flentry *) + &ft->ft_table.v4_pcpu[curcpu][index]; + else + fle = (struct flentry *)&ft->ft_table.v4[index]; } else { - fle->fl_hash_next = rt->rt_flow_head; - fle2 = FL_ENTRY(rt->rt_flow_head); - rt->rt_flow_head = hash; - fle2->fl_hash_prev = hash; + if (ft->ft_flags & FL_PCPU) + fle = (struct flentry *) + &ft->ft_table.v6_pcpu[curcpu][index]; + else + fle = (struct flentry *)&ft->ft_table.v6[index]; } - fle->fl_proto = proto; - fle->fl_rt = rt; - fle->fl_fhash = hash; - fle->fl_ticks = ticks; - rt->rt_refcnt++; - ipv4_flow_allocated++; + + return (fle); } -uint32_t -ipv4_flow_alloc(struct mbuf *m, struct route *ro) -{ - uint32_t key[3], hash, *hashkey; - struct flentry_v4 *fle; - uint16_t flags = 0; - uint8_t proto; - - /* - * Only handle IPv4 for now - * - */ - hash = ipv4_flow_lookup_hash_internal(m, ro, key, &flags, &proto); +static int +flow_stale(struct flowtable *ft, struct flentry *fle) +{ + time_t idle_time; - /* - * Ports are zero - thus not a protocol for which - * we need to keep state - */ - if (key[3] == 0) - return (hash); + if (fle->f_fhash == 0) + return (1); - FL_ENTRY_LOCK(hash); - fle = FL_ENTRY(hash); + idle_time = time_uptime - fle->f_uptime; - hashkey = fle->fl_flow.ipf_key; - - if (fle->fl_fhash == 0) { - FL_ENTRY_UNLOCK(hash); - rtalloc_mpath_fib(ro, hash, M_GETFIB(m)); - if (ro->ro_rt) { - FL_ENTRY_LOCK(hash); - ipv4_flow_insert(hash, key, proto, ro->ro_rt, flags); - RT_UNLOCK(ro->ro_rt); - } else - ipv4_flow_route_lookup_fail++; - } else if (fle->fl_fhash == hash - && key[0] == hashkey[0] - && key[1] == hashkey[1] - && key[2] == hashkey[2] - && proto == fle->fl_proto) { - fle->fl_ticks = ticks; - fle->fl_flags |= flags; - fle->fl_refcnt++; - ro->ro_rt = fle->fl_rt; - } else - ipv4_flow_collisions++; - - FL_ENTRY_UNLOCK(hash); + if ((fle->f_flags & FL_STALE) || + ((fle->f_flags & (TH_SYN|TH_ACK|TH_FIN)) == 0 + && (idle_time > ft->ft_udp_idle)) || + ((fle->f_flags & TH_FIN) + && (idle_time > ft->ft_fin_wait_idle)) || + ((fle->f_flags & (TH_SYN|TH_ACK)) == TH_SYN + && (idle_time > ft->ft_syn_idle)) || + ((fle->f_flags & (TH_SYN|TH_ACK)) == (TH_SYN|TH_ACK) + && (idle_time > ft->ft_tcp_idle)) || + ((fle->f_rt->rt_flags & RTF_UP) == 0 || + (fle->f_rt->rt_ifp == NULL))) + return (1); - return (hash); + return (0); } -/* - * Internal helper routine - * hash - the hash of the entry to free - * stale - indicates to only free the entry if it is marked stale - */ - -static uint32_t -ipv4_flow_free_internal(uint32_t hash, int staleonly) +static void +flowtable_set_hashkey(struct flowtable *ft, struct flentry *fle, uint32_t *key) { - struct flentry_v4 *fle, *fleprev, *flenext; - uint32_t hash_next; + uint32_t *hashkey; + int i, nwords; - fle = FL_ENTRY(hash); - hash_next = fle->fl_hash_next; - - if (staleonly && ((fle->fl_flags & FL_STALE) == 0)) - return (hash_next); - - if (fle->fl_hash_next) { - flenext = FL_ENTRY(fle->fl_hash_next); - flenext->fl_hash_prev = fle->fl_hash_prev; - } - if (fle->fl_hash_prev) { - fleprev = FL_ENTRY(fle->fl_hash_prev); - fleprev->fl_hash_next = fle->fl_hash_next; + if (ft->ft_flags & FL_IPV6) { + nwords = 9; + hashkey = ((struct flentry_v4 *)fle)->fl_flow.ipf_key; + } else { + nwords = 3; + hashkey = ((struct flentry_v6 *)fle)->fl_flow.ipf_key; } - fle->fl_hash_next = fle->fl_hash_prev = 0; - - if (fle->fl_refcnt == 0) { - fle->fl_rt->rt_refcnt--; - ipv4_flow_allocated--; - bit_clear(ipv4_flow_bitstring, FL_ENTRY_INDEX(hash)); - bzero(fle, sizeof(struct flentry_v4)); - } else if (!staleonly) - fle->fl_flags |= FL_STALE; - - return (hash_next); + + for (i = 0; i < nwords; i++) + hashkey[i] = key[i]; } -/* - * drops the refcount on the flow after alloc was called and - * checks if the flow has become stale since alloc was called - * - */ -void -ipv4_flow_free(uint32_t hash) +static void +flowtable_insert(struct flowtable *ft, uint32_t hash, uint32_t *key, + uint8_t proto, struct rtentry *rt, u_char *desten, uint16_t flags) { - struct flentry_v4 *fle; - struct rtentry *rt; + struct flentry *fle; + struct rtentry *rt0 = NULL; int stale; + bitstr_t *mask; + +retry: + FL_ENTRY_LOCK(ft, hash); + mask = flowtable_mask(ft); + fle = flowtable_entry(ft, hash); + if (fle->f_fhash) { + if ((stale = flow_stale(ft, fle)) != 0) { + fle->f_fhash = 0; + rt0 = fle->f_rt; + fle->f_rt = NULL; + bit_clear(mask, FL_ENTRY_INDEX(ft, hash)); + } + FL_ENTRY_UNLOCK(ft, hash); + if (!stale) + return; + RTFREE(rt0); + /* + * We might end up on a different cpu + */ + goto retry; + + } + flowtable_set_hashkey(ft, fle, key); + bit_set(mask, FL_ENTRY_INDEX(ft, hash)); - fle = FL_ENTRY(hash); - KASSERT(fle->fl_refcnt > 0, - ("route referenced with flow refcount set to zero")); - - stale = ((fle->fl_flags & FL_STALE) && - (fle->fl_refcnt == 1)); - - rt = fle->fl_rt; - if (stale) - RT_LOCK(rt); - - FL_ENTRY_LOCK(hash); - fle->fl_refcnt--; - - if (stale) { - ipv4_flow_free_internal(hash, 0); - RTFREE_LOCKED(rt); - } - FL_ENTRY_UNLOCK(hash); + fle->f_proto = proto; + fle->f_rt = rt; + fle->f_fhash = hash; + fle->f_uptime = time_uptime; + memcpy(fle->f_desten, desten, ETHER_ADDR_LEN); + FL_ENTRY_UNLOCK(ft, hash); } -/* - * - * Frees all flows that are linked to this rtentry - * - */ void -ipv4_flow_free_all(struct rtentry *rt) +route_to_rtentry_info(struct route *ro, u_char *desten, struct rtentry_info *ri) { - uint32_t hash_next = rt->rt_flow_head; + struct sockaddr_in *sin = (struct sockaddr_in *)&ro->ro_dst; + struct rtentry *rt = ro->ro_rt; + + ri->ri_ifp = rt->rt_ifp; + ri->ri_ifa = rt->rt_ifa; + ri->ri_flags = rt->rt_flags; + ri->ri_mtu = rt->rt_rmx.rmx_mtu; - RT_LOCK_ASSERT(rt); - while (hash_next) - hash_next = ipv4_flow_free_internal(hash_next, 0); + if (rt->rt_flags & RTF_GATEWAY && !IN_MULTICAST(sin->sin_addr.s_addr)) + memcpy(&ri->ri_dst, sin, sizeof(struct sockaddr)); + else + memcpy(&ri->ri_dst, rt->rt_gateway, sizeof(struct sockaddr)); + + if (desten) { + memcpy(ri->ri_desten, desten, ETHER_ADDR_LEN); + ri->ri_flags |= RTF_DESTEN_VALID; + } } -/* - * Frees all flows tied to this rt that - * have been marked stale - * - */ static int -ipv4_flow_free_stale(struct radix_node *rn, void *unused) +flowtable_key_equal(struct flentry *fle, uint32_t *key, int flags) { - struct rtentry *rt = (struct rtentry *)rn; - uint32_t hash_next; - - if (rt->rt_flow_head == 0) - return (0); + uint32_t *hashkey; + int i, nwords; - RT_LOCK(rt); - hash_next = rt->rt_flow_head; - while (hash_next) - hash_next = ipv4_flow_free_internal(hash_next, 1); - RT_UNLOCK(rt); + if (flags & FL_IPV6) { + nwords = 9; + hashkey = ((struct flentry_v4 *)fle)->fl_flow.ipf_key; + } else { + nwords = 3; + hashkey = ((struct flentry_v6 *)fle)->fl_flow.ipf_key; + } + + for (i = 0; i < nwords; i++) + if (hashkey[i] != key[i]) + return (0); - return (0); + return (1); } -struct radix_node_head *ipv4_flow_rnh_list[100]; -static void -ipv4_flow_check_stale(struct flentry_v4 *fle, - struct radix_node_head **rnh_list, int *rnh_count) +int +flowtable_lookup(struct flowtable *ft, struct mbuf *m, + struct rtentry_info *ri) { - int count = *rnh_count; - uint32_t idle_ticks; - struct radix_node_head *rnh; - struct rtentry *rt; - int i, stale = 0, found = 0; - - if (ticks > fle->fl_ticks) - idle_ticks = ticks - fle->fl_ticks; - else - idle_ticks = (INT_MAX - fle->fl_ticks) + ticks ; + uint32_t key[9], hash; + struct flentry *fle; + uint16_t flags; + uint8_t proto; + struct route ro; + int cache = 1, error = 0; + u_char desten[ETHER_ADDR_LEN]; + + flags = ft ? ft->ft_flags : FL_LOCAL_XMIT; + + /* + * The internal hash lookup is the only IPv4 specific bit + * remaining + */ + hash = ipv4_flow_lookup_hash_internal(m, &ro, key, + &flags, &proto); + - if ((fle->fl_flags & FL_STALE) || - ((fle->fl_flags & (TH_SYN|TH_ACK|TH_FIN)) == 0 - && (idle_ticks > UDP_IDLE)) || - ((fle->fl_flags & TH_FIN) - && (idle_ticks > FIN_WAIT_IDLE)) || - ((fle->fl_flags & (TH_SYN|TH_ACK)) == TH_SYN - && (idle_ticks > SYN_IDLE)) || - ((fle->fl_flags & (TH_SYN|TH_ACK)) == (TH_SYN|TH_ACK) - && (idle_ticks > TCP_IDLE))) - stale = 1; - - if (stale == 0) - return; - - fle->fl_flags |= FL_STALE; - rt = fle->fl_rt; - rnh = V_rt_tables[rt->rt_fibnum][rt_key(rt)->sa_family]; - - for (i = 0; i < count; i++) - if (rnh_list[i] == rnh) { - found = 1; - break; - } - if (found == 0) { - rnh_list[count] = rnh; - count++; - *rnh_count = count; + /* + * Ports are zero and this isn't a transmit cache + * - thus not a protocol for which we need to keep + * statex + * FL_LOCAL_XMIT => key[0] == 0 + */ + if (hash == 0 || (key[0] == 0 && (ft->ft_flags & FL_LOCAL_XMIT) == 0)) { + cache = 0; + goto uncached; } -} + FL_ENTRY_LOCK(ft, hash); + fle = FL_ENTRY(ft, hash); + if (fle->f_fhash != hash) { + cache = !flow_stale(ft, fle); + FL_ENTRY_UNLOCK(ft, hash); + } else if (fle->f_fhash == hash + && flowtable_key_equal(fle, key, flags) + && (proto == fle->f_proto) + && (fle->f_rt->rt_flags & RTF_UP) + && (fle->f_uptime > fle->f_rt->rt_llinfo_uptime)) { + + if ((fle->f_rt->rt_flags & RTF_GATEWAY) && + ((fle->f_rt->rt_gwroute->rt_flags & RTF_UP) == 0)) + goto uncached; + + fle->f_uptime = time_uptime; + fle->f_flags |= flags; + fle->f_rt->rt_rmx.rmx_pksent++; + route_to_rtentry_info(&ro, fle->f_desten, ri); + FL_ENTRY_UNLOCK(ft, hash); + return (0); + } +uncached: + ft->ft_rtalloc(&ro, hash, M_GETFIB(m)); + if (ro.ro_rt == NULL) + error = ENETUNREACH; + else { + RT_UNLOCK(ro.ro_rt); + error = arpresolve(ro.ro_rt->rt_ifp, ro.ro_rt, m, + &ro.ro_dst, desten); + route_to_rtentry_info(&ro, error ? NULL : desten, ri); + + if (error == 0 && cache) + flowtable_insert(ft, hash, key, proto, + ro.ro_rt, desten, flags); + else + RTFREE(ro.ro_rt); + error = 0; + } + return (error); +} + +#ifdef notyet static __inline int bit_fns(bitstr_t *name, int nbits, int lastbit) { @@ -545,60 +635,65 @@ bit_fns(bitstr_t *name, int nbits, int l return (value); } +#endif - -static int ipv4_flow_last_index; -static void -ipv4_flow_timeout(void *arg) +struct flowtable * +flowtable_alloc(int nentry, int flags) { - int i, idx, rnh_count = 0; - struct radix_node_head *rnh; - - /* - * scan 1/4th of the table once a second - */ - for (i = 0; i < (ipv4_flow_allocated >> 2); i++) { - idx = bit_fns(ipv4_flow_bitstring, ipv4_flow_table_size, - ipv4_flow_last_index); - if (idx == -1) { - ipv4_flow_last_index = 0; - break; + struct flowtable *ft; + int i; + + ft = malloc(sizeof(struct flowtable), + M_RTABLE, M_WAITOK | M_ZERO); + + ft->ft_flags = flags; + ft->ft_size = nentry; +#ifdef RADIX_MPATH + ft->ft_rtalloc = rtalloc_mpath_fib; +#else + ft->ft_rtalloc = in_rtalloc_ign_wrapper; +#endif + if (flags & FL_PCPU) { + ft->ft_lock = flowtable_pcpu_lock; + ft->ft_unlock = flowtable_pcpu_unlock; + + for (i = 0; i < mp_ncpus; i++) { + ft->ft_table.v4_pcpu[i] = + malloc(nentry*sizeof(struct flentry_v4), + M_RTABLE, M_WAITOK | M_ZERO); + ft->ft_masks[i] = bit_alloc(nentry); } + } else { + ft->ft_lock_count = 2*(powerof2(mp_ncpus) ? mp_ncpus : + (fls(mp_ncpus) << 1)); - FL_ENTRY_LOCK(idx); - ipv4_flow_check_stale(FL_ENTRY(idx), ipv4_flow_rnh_list, &rnh_count); - FL_ENTRY_UNLOCK(idx); - } - for (i = 0; i < rnh_count; i++) { - rnh = ipv4_flow_rnh_list[i]; - RADIX_NODE_HEAD_LOCK(rnh); - rnh->rnh_walktree(rnh, ipv4_flow_free_stale, NULL); - RADIX_NODE_HEAD_UNLOCK(rnh); - } + ft->ft_lock = flowtable_global_lock; + ft->ft_unlock = flowtable_global_unlock; + ft->ft_table.v4 = + malloc(nentry*sizeof(struct flentry_v4), + M_RTABLE, M_WAITOK | M_ZERO); + ft->ft_locks = malloc(ft->ft_lock_count*sizeof(struct mtx), + M_RTABLE, M_WAITOK | M_ZERO); + for (i = 0; i < ft->ft_lock_count; i++) + mtx_init(&ft->ft_locks[i], "flow", NULL, MTX_DEF); - callout_reset(&ipv4_flow_callout, hz, ipv4_flow_timeout, NULL); -} - -static void -flowtable_init(void *unused) -{ - int i, nentry; + ft->ft_masks[0] = bit_alloc(nentry); + } - nentry = ipv4_flow_max_count; /* - * round mp_ncpus up to the next power of 2 and double - * to determine the number of locks + * In the local transmit case the table truly is + * just a cache - so everything is eligible for + * replacement after 5s of non-use */ - ipv4_flow_lock_count = (1 << fls(mp_ncpus)) << 1; - - ipv4_flow_table_size = nentry; - ipv4_flow_table = malloc(nentry*sizeof(struct flentry_v4), - M_RTABLE, M_WAITOK | M_ZERO); - ipv4_flow_bitstring = bit_alloc(nentry); - ipv4_flow_locks = malloc(ipv4_flow_lock_count*sizeof(struct mtx), - M_RTABLE, M_WAITOK | M_ZERO); - for (i = 0; i < ipv4_flow_lock_count; i++) - mtx_init(&ipv4_flow_locks[i], "ipv4_flow", NULL, MTX_DEF); + if (flags & FL_LOCAL_XMIT) + ft->ft_udp_idle = ft->ft_fin_wait_idle = + ft->ft_syn_idle = ft->ft_tcp_idle = 5; + else { + ft->ft_udp_idle = UDP_IDLE; + ft->ft_syn_idle = SYN_IDLE; + ft->ft_fin_wait_idle = FIN_WAIT_IDLE; + ft->ft_tcp_idle = TCP_IDLE; + } + return (ft); } -SYSINIT(flowtable, SI_SUB_INIT_IF, SI_ORDER_ANY, flowtable_init, NULL); Added: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.h Mon Oct 27 05:19:26 2008 (r184320) @@ -0,0 +1,49 @@ +#ifndef _NET_FLOWTABLE_H_ +#define _NET_FLOWTABLE_H_ + +#ifdef _KERNEL +#include +#include + +#define FL_LOCAL_XMIT (1<<0) /* per host, don't hash ports */ +#define FL_PCPU (1<<1) /* pcpu cache */ +#define FL_IPV6 (1<<2) /* IPv6 table */ + +struct flowtable; +struct flowtable *flowtable_alloc(int nentry, int flags); + +struct rtentry_info { + struct ifnet *ri_ifp; + struct ifaddr *ri_ifa; + int ri_flags; + int ri_mtu; + u_char ri_desten[ETHER_ADDR_LEN]; + struct sockaddr_in ri_dst; /* rt_gateway if RTF_GATEWAY */ +}; + +struct rtentry_info6 { + struct ifnet *ri_ifp; + struct ifaddr *ri_ifa; + int ri_flags; + int ri_mtu; + u_char ri_desten[ETHER_ADDR_LEN]; + struct sockaddr_in6 ri_dst; /* rt_gateway if RTF_GATEWAY */ +}; + +/* + * Given a flow table, look up the L3 and L2 information and + * return it in ri + * + */ +int flowtable_lookup(struct flowtable *ft, struct mbuf *m, + struct rtentry_info *ri); +/* + * Convert a route and an (optional) L2 address to an + * rtentry_info + * + */ +void route_to_rtentry_info(struct route *ro, u_char *desten, + struct rtentry_info *ri); + +#endif +#endif From owner-svn-src-user@FreeBSD.ORG Mon Oct 27 05:23:40 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C19C41065675; Mon, 27 Oct 2008 05:23:40 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AF8858FC0A; Mon, 27 Oct 2008 05:23:40 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9R5NerP026484; Mon, 27 Oct 2008 05:23:40 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9R5Neq1026477; Mon, 27 Oct 2008 05:23:40 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810270523.m9R5Neq1026477@svn.freebsd.org> From: Kip Macy Date: Mon, 27 Oct 2008 05:23:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184321 - in user/kmacy/HEAD_fast_xmit/sys: net netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Oct 2008 05:23:40 -0000 Author: kmacy Date: Mon Oct 27 05:23:40 2008 New Revision: 184321 URL: http://svn.freebsd.org/changeset/base/184321 Log: Hook rtentry_info use in to ip_output and ether_output in a non-disruptive albeit extremely hackish way Modified: user/kmacy/HEAD_fast_xmit/sys/net/if_ethersubr.c user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.h user/kmacy/HEAD_fast_xmit/sys/net/route.h user/kmacy/HEAD_fast_xmit/sys/netinet/if_ether.c user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c user/kmacy/HEAD_fast_xmit/sys/netinet/ip_var.h Modified: user/kmacy/HEAD_fast_xmit/sys/net/if_ethersubr.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/if_ethersubr.c Mon Oct 27 05:19:26 2008 (r184320) +++ user/kmacy/HEAD_fast_xmit/sys/net/if_ethersubr.c Mon Oct 27 05:23:40 2008 (r184321) @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -160,7 +161,8 @@ ether_output(struct ifnet *ifp, struct m u_char esrc[ETHER_ADDR_LEN], edst[ETHER_ADDR_LEN]; struct ether_header *eh; struct pf_mtag *t; - int loop_copy = 1; + struct rtentry_info *ri = NULL; + int riset = 0, loop_copy = 1; int hlen; /* link layer header length */ #ifdef MAC @@ -168,6 +170,17 @@ ether_output(struct ifnet *ifp, struct m if (error) senderr(error); #endif + /* + * XXX rather hackish interface to ip_output + * to pass an rtentry_info in + * + */ + if (dst == NULL) { + ri = (struct rtentry_info *)rt0; + dst = (struct sockaddr *)&ri->ri_dst; + riset = 1; + rt0 = NULL; + } M_PROFILE(m); if (ifp->if_flags & IFF_MONITOR) @@ -180,7 +193,11 @@ ether_output(struct ifnet *ifp, struct m switch (dst->sa_family) { #ifdef INET case AF_INET: - error = arpresolve(ifp, rt0, m, dst, edst); + error = 0; + if (riset && (ri->ri_flags && RTF_DESTEN_VALID)) + memcpy(edst, ri->ri_desten, ETHER_ADDR_LEN); + else + error = arpresolve(ifp, rt0, m, dst, edst); if (error) return (error == EWOULDBLOCK ? 0 : error); type = htons(ETHERTYPE_IP); Modified: user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.h Mon Oct 27 05:19:26 2008 (r184320) +++ user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.h Mon Oct 27 05:23:40 2008 (r184321) @@ -58,11 +58,6 @@ int rt_mpath_deldup(struct rtentry *, st int rn4_mpath_inithead(void **, int); int rn6_mpath_inithead(void **, int); -uint32_t ipv4_flow_alloc(struct mbuf *m, struct route *ro); -void ipv4_flow_free(uint32_t hash); - -uint32_t ipv4_flow_lookup_hash(struct mbuf *m); -void ipv4_flow_free_all(struct rtentry *rt); #endif #endif /* _NET_RADIX_MPATH_H_ */ Modified: user/kmacy/HEAD_fast_xmit/sys/net/route.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/route.h Mon Oct 27 05:19:26 2008 (r184320) +++ user/kmacy/HEAD_fast_xmit/sys/net/route.h Mon Oct 27 05:23:40 2008 (r184321) @@ -148,9 +148,7 @@ struct rtentry { #ifdef _KERNEL /* XXX ugly, user apps use this definition but don't have a mtx def */ struct mtx rt_mtx; /* mutex for routing entry */ -#ifdef RADIX_MPATH - uint32_t rt_flow_head; -#endif + time_t rt_llinfo_uptime; /* last time the rt_llinfo changed */ #endif }; @@ -199,6 +197,7 @@ struct ortentry { #define RTF_BROADCAST 0x400000 /* route represents a bcast address */ #define RTF_MULTICAST 0x800000 /* route represents a mcast address */ /* 0x1000000 and up unassigned */ +#define RTF_DESTEN_VALID 0x80000000 /* rtentry_info L2 addr is valid */ /* Mask of RTF flags that are allowed to be modified by RTM_CHANGE. */ #define RTF_FMASK \ Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/if_ether.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/if_ether.c Mon Oct 27 05:19:26 2008 (r184320) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/if_ether.c Mon Oct 27 05:23:40 2008 (r184321) @@ -216,6 +216,7 @@ arp_rtrequest(int req, struct rtentry *r */ R_Zalloc(la, struct llinfo_arp *, sizeof(*la)); rt->rt_llinfo = (caddr_t)la; + rt->rt_llinfo_uptime = time_uptime; if (la == 0) { log(LOG_DEBUG, "%s: malloc failed\n", __func__); break; @@ -299,6 +300,7 @@ arp_rtrequest(int req, struct rtentry *r callout_stop(&la->la_timer); rt->rt_llinfo = NULL; rt->rt_flags &= ~RTF_LLINFO; + rt->rt_llinfo_uptime = time_uptime; RT_REMREF(rt); if (la->la_hold) m_freem(la->la_hold); Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Mon Oct 27 05:19:26 2008 (r184320) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Mon Oct 27 05:23:40 2008 (r184321) @@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -211,6 +212,7 @@ SYSCTL_V_INT(V_NET, vnet_inet, _net_inet ip_fw_chk_t *ip_fw_chk_ptr = NULL; ip_dn_io_t *ip_dn_io_ptr = NULL; int fw_one_pass = 1; +struct flowtable *ipv4_ft; static void ip_freef(struct ipqhead *, struct ipq *); @@ -277,6 +279,8 @@ ip_init(void) ipintrq.ifq_maxlen = ipqmaxlen; mtx_init(&ipintrq.ifq_mtx, "ip_inq", NULL, MTX_DEF); netisr_register(NETISR_IP, ip_input, &ipintrq, 0); + + ipv4_ft = flowtable_alloc(2048, FL_LOCAL_XMIT|FL_PCPU); } void Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Mon Oct 27 05:19:26 2008 (r184320) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Mon Oct 27 05:23:40 2008 (r184321) @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #ifdef RADIX_MPATH #include #endif +#include #include #include @@ -97,6 +98,9 @@ static void ip_mloopback extern struct protosw inetsw[]; +extern struct flowtable *ipv4_ft; + + /* * IP output. The packet in mbuf chain m contains a skeletal IP * header (with len, off, ttl, proto, tos, src, dst). @@ -120,20 +124,27 @@ ip_output(struct mbuf *m, struct mbuf *o struct sockaddr_in *dst = NULL; /* keep compiler happy */ struct in_ifaddr *ia = NULL; int isbroadcast, sw_csum; - struct route iproute; + struct rtentry_info ipri, *ri; struct in_addr odst; #ifdef IPFIREWALL_FORWARD struct m_tag *fwd_tag = NULL; #endif M_ASSERTPKTHDR(m); - - if (ro == NULL) { - ro = &iproute; - bzero(ro, sizeof (*ro)); + if (inp != NULL) { + INP_LOCK_ASSERT(inp); + M_SETFIB(m, inp->inp_inc.inc_fibnum); } - if (inp != NULL) - INP_LOCK_ASSERT(inp); + if (flags & IP_RTINFO) /* ugly interface overload */ + ri = (struct rtentry_info *)ro; + else { + ri = &ipri; + bzero(ri, sizeof (*ri)); + if (ro) + route_to_rtentry_info(ro, NULL, ri); + else if (flowtable_lookup(ipv4_ft, m, ri)) + return (ENETUNREACH); + } if (opt) { len = 0; @@ -163,32 +174,9 @@ ip_output(struct mbuf *m, struct mbuf *o hlen = ip->ip_hl << 2; } - dst = (struct sockaddr_in *)&ro->ro_dst; + dst = (struct sockaddr_in *)&ri->ri_dst; again: /* - * If there is a cached route, - * check that it is to the same destination - * and is still up. If not, free it and try again. - * The address family should also be checked in case of sharing the - * cache with IPv6. - */ - if (ro->ro_rt && ((ro->ro_rt->rt_flags & RTF_UP) == 0 || - dst->sin_family != AF_INET || - dst->sin_addr.s_addr != ip->ip_dst.s_addr)) { - RTFREE(ro->ro_rt); - ro->ro_rt = (struct rtentry *)NULL; - } -#ifdef IPFIREWALL_FORWARD - if (ro->ro_rt == NULL && fwd_tag == NULL) { -#else - if (ro->ro_rt == NULL) { -#endif - bzero(dst, sizeof(*dst)); - dst->sin_family = AF_INET; - dst->sin_len = sizeof(*dst); - dst->sin_addr = ip->ip_dst; - } - /* * If routing to interface only, short circuit routing lookup. * The use of an all-ones broadcast address implies this; an * interface is specified by the broadcast address of an interface, @@ -231,7 +219,14 @@ again: * as this is probably required in all cases for correct * operation (as it is for ARP). */ - if (ro->ro_rt == NULL) + if ((ri->ri_flags & RTF_UP) == 0) { + error = flowtable_lookup(ipv4_ft, m, ri); + if (error) + goto bad; + + } +#ifdef nomore + #ifdef RADIX_MPATH rtalloc_mpath_fib(ro, ntohl(ip->ip_src.s_addr ^ ip->ip_dst.s_addr), @@ -245,13 +240,11 @@ again: error = EHOSTUNREACH; goto bad; } - ia = ifatoia(ro->ro_rt->rt_ifa); - ifp = ro->ro_rt->rt_ifp; - ro->ro_rt->rt_rmx.rmx_pksent++; - if (ro->ro_rt->rt_flags & RTF_GATEWAY) - dst = (struct sockaddr_in *)ro->ro_rt->rt_gateway; - if (ro->ro_rt->rt_flags & RTF_HOST) - isbroadcast = (ro->ro_rt->rt_flags & RTF_BROADCAST); +#endif + ia = ifatoia(ri->ri_ifa); + ifp = ri->ri_ifp; + if (ri->ri_flags & RTF_HOST) + isbroadcast = (ri->ri_flags & RTF_BROADCAST); else isbroadcast = in_broadcast(dst->sin_addr, ifp); } @@ -259,7 +252,7 @@ again: * Calculate MTU. If we have a route that is up, use that, * otherwise use the interface's MTU. */ - if (ro->ro_rt != NULL && (ro->ro_rt->rt_flags & (RTF_UP|RTF_HOST))) { + if (ri->ri_flags & (RTF_UP|RTF_HOST)) { /* * This case can happen if the user changed the MTU * of an interface after enabling IP on it. Because @@ -267,9 +260,9 @@ again: * them, there is no way for one to update all its * routes when the MTU is changed. */ - if (ro->ro_rt->rt_rmx.rmx_mtu > ifp->if_mtu) - ro->ro_rt->rt_rmx.rmx_mtu = ifp->if_mtu; - mtu = ro->ro_rt->rt_rmx.rmx_mtu; + if (ri->ri_mtu > ifp->if_mtu) + ri->ri_mtu = ifp->if_mtu; + mtu = ri->ri_mtu; } else { mtu = ifp->if_mtu; } @@ -278,12 +271,6 @@ again: m->m_flags |= M_MCAST; /* - * IP destination address is multicast. Make sure "dst" - * still points to the address in "ro". (It may have been - * changed to point to a gateway address, above.) - */ - dst = (struct sockaddr_in *)&ro->ro_dst; - /* * See if the caller provided any multicast options */ if (imo != NULL) { @@ -430,6 +417,10 @@ again: } sendit: +/* + * XXX we've broken IPSEC + * + */ #ifdef IPSEC switch(ip_ipsec_output(&m, inp, &flags, &error, &ro, &iproute, &dst, &ia, &ifp)) { case 1: @@ -498,7 +489,7 @@ sendit: /* Or forward to some other address? */ fwd_tag = m_tag_find(m, PACKET_TAG_IPFORWARD, NULL); if (fwd_tag) { - dst = (struct sockaddr_in *)&ro->ro_dst; + dst = (struct sockaddr_in *)&ri->ri_dst; bcopy((fwd_tag+1), dst, sizeof(struct sockaddr_in)); m->m_flags |= M_SKIP_FIREWALL; m_tag_delete(m, fwd_tag); @@ -562,8 +553,17 @@ passout: */ m->m_flags &= ~(M_PROTOFLAGS); - error = (*ifp->if_output)(ifp, m, - (struct sockaddr *)dst, ro->ro_rt); + /* + * XXX rather hackish interface to ether_output + * to pass an rtentry_info in + * + */ + if (ifp->if_output == ether_output) + error = (*ifp->if_output)(ifp, m, + NULL, (struct rtentry *)ri); + else + error = (*ifp->if_output)(ifp, m, + (struct sockaddr *)dst, NULL); goto done; } @@ -596,8 +596,17 @@ passout: */ m->m_flags &= ~(M_PROTOFLAGS); - error = (*ifp->if_output)(ifp, m, - (struct sockaddr *)dst, ro->ro_rt); + /* + * XXX rather hackish interface to ether_output + * to pass an rtentry_info in + * + */ + if (ifp->if_output == ether_output) + error = (*ifp->if_output)(ifp, m, + NULL, (struct rtentry *)ri); + else + error = (*ifp->if_output)(ifp, m, + (struct sockaddr *)dst, NULL); } else m_freem(m); } @@ -606,9 +615,6 @@ passout: V_ipstat.ips_fragmented++; done: - if (ro == &iproute && ro->ro_rt) { - RTFREE(ro->ro_rt); - } return (error); bad: m_freem(m); Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_var.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_var.h Mon Oct 27 05:19:26 2008 (r184320) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_var.h Mon Oct 27 05:23:40 2008 (r184321) @@ -158,6 +158,7 @@ struct ipstat { #define IP_SENDTOIF 0x8 /* send on specific ifnet */ #define IP_ROUTETOIF SO_DONTROUTE /* 0x10 bypass routing tables */ #define IP_ALLOWBROADCAST SO_BROADCAST /* 0x20 can send broadcast packets */ +#define IP_RTINFO 0x80 /* ip_output is passed an rtentry_info */ /* * mbuf flag used by ip_fastfwd From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 01:21:19 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB2811065685; Tue, 28 Oct 2008 01:21:19 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 99A348FC0C; Tue, 28 Oct 2008 01:21:19 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S1LJOm058460; Tue, 28 Oct 2008 01:21:19 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S1LJHx058456; Tue, 28 Oct 2008 01:21:19 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280121.m9S1LJHx058456@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 01:21:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184383 - in user/kmacy/HEAD_fast_xmit/sys: net netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 01:21:19 -0000 Author: kmacy Date: Tue Oct 28 01:21:19 2008 New Revision: 184383 URL: http://svn.freebsd.org/changeset/base/184383 Log: - simplify validation in flow_lookup - rename and invert sense of FL_LOCAL_XMIT to FL_HASH_PORTS for clarity - add route validation to flow_stale - add flag to disable flowtable usage - add explanation of hideousness of route + arp lookup locking - make hashjitter a static so as not to rely on RADIX_MPATH being enabled Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c user/kmacy/HEAD_fast_xmit/sys/net/flowtable.h user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Mon Oct 27 23:11:14 2008 (r184382) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 01:21:19 2008 (r184383) @@ -269,7 +269,8 @@ struct flowtable { }; -extern uint32_t hashjitter; +static uint32_t hashjitter; +static int flowtable_disable; static void in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fib) @@ -337,6 +338,9 @@ ipv4_flow_lookup_hash_internal(struct mb sin->sin_len = sizeof(*sin); sin->sin_addr = ip->ip_dst; + if (flowtable_disable) + return (0); + switch (proto) { case IPPROTO_TCP: th = (struct tcphdr *)((caddr_t)ip + iphlen); @@ -369,7 +373,7 @@ ipv4_flow_lookup_hash_internal(struct mb * hash all flows to a given destination to * the same bucket */ - if (*flags & FL_LOCAL_XMIT) + if ((*flags & FL_HASH_PORTS) == 0) proto = sport = dport = 0; ((uint16_t *)key)[0] = sport; @@ -423,9 +427,13 @@ flow_stale(struct flowtable *ft, struct { time_t idle_time; - if (fle->f_fhash == 0) + if ((fle->f_fhash == 0) + || ((fle->f_rt->rt_flags & RTF_UP) == 0) + || (fle->f_uptime <= fle->f_rt->rt_llinfo_uptime) + || ((fle->f_rt->rt_flags & RTF_GATEWAY) && + ((fle->f_rt->rt_gwroute->rt_flags & RTF_UP) == 0))) return (1); - + idle_time = time_uptime - fle->f_uptime; if ((fle->f_flags & FL_STALE) || @@ -553,12 +561,12 @@ flowtable_lookup(struct flowtable *ft, s uint32_t key[9], hash; struct flentry *fle; uint16_t flags; - uint8_t proto; + uint8_t proto = 0; struct route ro; int cache = 1, error = 0; u_char desten[ETHER_ADDR_LEN]; - flags = ft ? ft->ft_flags : FL_LOCAL_XMIT; + flags = ft ? ft->ft_flags : 0; /* * The internal hash lookup is the only IPv4 specific bit @@ -572,19 +580,16 @@ flowtable_lookup(struct flowtable *ft, s * Ports are zero and this isn't a transmit cache * - thus not a protocol for which we need to keep * statex - * FL_LOCAL_XMIT => key[0] == 0 + * FL_HASH_PORTS => key[0] != 0 for TCP || UDP || SCTP */ - if (hash == 0 || (key[0] == 0 && (ft->ft_flags & FL_LOCAL_XMIT) == 0)) { + if (hash == 0 || (key[0] == 0 && (ft->ft_flags & FL_HASH_PORTS))) { cache = 0; goto uncached; } FL_ENTRY_LOCK(ft, hash); fle = FL_ENTRY(ft, hash); - if (fle->f_fhash != hash) { - cache = !flow_stale(ft, fle); - FL_ENTRY_UNLOCK(ft, hash); - } else if (fle->f_fhash == hash + if (fle->f_fhash == hash && flowtable_key_equal(fle, key, flags) && (proto == fle->f_proto) && (fle->f_rt->rt_flags & RTF_UP) @@ -601,7 +606,20 @@ flowtable_lookup(struct flowtable *ft, s FL_ENTRY_UNLOCK(ft, hash); return (0); } + FL_ENTRY_UNLOCK(ft, hash); + uncached: + /* + * This bit of code ends up locking the + * same route 3 times (just like ip_output + ether_output) + * - at lookup + * - in rt_check when called by arpresolve + * - dropping the refcount for the rtentry + * + * This could be consolidated to one if we wrote a variant + * of arpresolve with an rt_check variant that expected to + * receive the route locked + */ ft->ft_rtalloc(&ro, hash, M_GETFIB(m)); if (ro.ro_rt == NULL) error = ENETUNREACH; @@ -643,6 +661,9 @@ flowtable_alloc(int nentry, int flags) struct flowtable *ft; int i; + if (hashjitter == 0) + hashjitter = arc4random(); + ft = malloc(sizeof(struct flowtable), M_RTABLE, M_WAITOK | M_ZERO); @@ -685,15 +706,17 @@ flowtable_alloc(int nentry, int flags) * just a cache - so everything is eligible for * replacement after 5s of non-use */ - if (flags & FL_LOCAL_XMIT) - ft->ft_udp_idle = ft->ft_fin_wait_idle = - ft->ft_syn_idle = ft->ft_tcp_idle = 5; - else { + if (flags & FL_HASH_PORTS) { ft->ft_udp_idle = UDP_IDLE; ft->ft_syn_idle = SYN_IDLE; ft->ft_fin_wait_idle = FIN_WAIT_IDLE; ft->ft_tcp_idle = TCP_IDLE; + } else { + ft->ft_udp_idle = ft->ft_fin_wait_idle = + ft->ft_syn_idle = ft->ft_tcp_idle = 5; + } + return (ft); } Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.h Mon Oct 27 23:11:14 2008 (r184382) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.h Tue Oct 28 01:21:19 2008 (r184383) @@ -5,7 +5,7 @@ #include #include -#define FL_LOCAL_XMIT (1<<0) /* per host, don't hash ports */ +#define FL_HASH_PORTS (1<<0) /* hash 4-tuple + protocol */ #define FL_PCPU (1<<1) /* pcpu cache */ #define FL_IPV6 (1<<2) /* IPv6 table */ Modified: user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c Mon Oct 27 23:11:14 2008 (r184382) +++ user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c Tue Oct 28 01:21:19 2008 (r184383) @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); /* * give some jitter to hash, to avoid synchronization between routers */ -uint32_t hashjitter; +static uint32_t hashjitter; int rn_mpath_capable(struct radix_node_head *rnh) Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Mon Oct 27 23:11:14 2008 (r184382) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Tue Oct 28 01:21:19 2008 (r184383) @@ -280,7 +280,7 @@ ip_init(void) mtx_init(&ipintrq.ifq_mtx, "ip_inq", NULL, MTX_DEF); netisr_register(NETISR_IP, ip_input, &ipintrq, 0); - ipv4_ft = flowtable_alloc(2048, FL_LOCAL_XMIT|FL_PCPU); + ipv4_ft = flowtable_alloc(2048, FL_PCPU); } void From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 02:15:17 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 94035106566B; Tue, 28 Oct 2008 02:15:17 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8361C8FC08; Tue, 28 Oct 2008 02:15:17 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S2FH3o063484; Tue, 28 Oct 2008 02:15:17 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S2FHM3063483; Tue, 28 Oct 2008 02:15:17 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280215.m9S2FHM3063483@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 02:15:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184384 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 02:15:17 -0000 Author: kmacy Date: Tue Oct 28 02:15:17 2008 New Revision: 184384 URL: http://svn.freebsd.org/changeset/base/184384 Log: Initialize ro.ro_rt to avoid confusing rtalloc don't call RT_UNLOCK(ro.ro_rt) - the rtalloc routine returns it unlocked Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 01:21:19 2008 (r184383) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 02:15:17 2008 (r184384) @@ -567,7 +567,8 @@ flowtable_lookup(struct flowtable *ft, s u_char desten[ETHER_ADDR_LEN]; flags = ft ? ft->ft_flags : 0; - + ro.ro_rt = NULL; + /* * The internal hash lookup is the only IPv4 specific bit * remaining @@ -624,7 +625,6 @@ uncached: if (ro.ro_rt == NULL) error = ENETUNREACH; else { - RT_UNLOCK(ro.ro_rt); error = arpresolve(ro.ro_rt->rt_ifp, ro.ro_rt, m, &ro.ro_dst, desten); route_to_rtentry_info(&ro, error ? NULL : desten, ri); From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 05:41:44 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B46831065681; Tue, 28 Oct 2008 05:41:44 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A342C8FC24; Tue, 28 Oct 2008 05:41:44 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S5fiDe083661; Tue, 28 Oct 2008 05:41:44 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S5fi8t083660; Tue, 28 Oct 2008 05:41:44 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280541.m9S5fi8t083660@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 05:41:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184387 - user/kmacy/HEAD_fast_xmit/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 05:41:44 -0000 Author: kmacy Date: Tue Oct 28 05:41:44 2008 New Revision: 184387 URL: http://svn.freebsd.org/changeset/base/184387 Log: log errors and make sure flow gets re-looked up if dst address changes Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Tue Oct 28 04:32:41 2008 (r184386) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Tue Oct 28 05:41:44 2008 (r184387) @@ -466,10 +466,13 @@ sendit: error = netisr_queue(NETISR_IP, m); goto done; - } else + } else { + ri->ri_flags &= ~RTF_UP; goto again; /* Redo the routing table lookup. */ - } + } + } + #ifdef IPFIREWALL_FORWARD /* See if local, if yes, send it to netisr with IP_FASTFWD_OURS. */ if (m->m_flags & M_FASTFWD_OURS) { @@ -493,6 +496,7 @@ sendit: bcopy((fwd_tag+1), dst, sizeof(struct sockaddr_in)); m->m_flags |= M_SKIP_FIREWALL; m_tag_delete(m, fwd_tag); + ri->ri_flags &= ~RTF_UP; goto again; } #endif /* IPFIREWALL_FORWARD */ @@ -617,6 +621,7 @@ passout: done: return (error); bad: + printf("freeing %p\n", m); m_freem(m); goto done; } From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 05:50:28 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E75381065671; Tue, 28 Oct 2008 05:50:28 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D64EE8FC1C; Tue, 28 Oct 2008 05:50:28 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S5oSpQ083889; Tue, 28 Oct 2008 05:50:28 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S5oSYq083888; Tue, 28 Oct 2008 05:50:28 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280550.m9S5oSYq083888@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 05:50:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184388 - user/kmacy/HEAD_fast_xmit/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 05:50:29 -0000 Author: kmacy Date: Tue Oct 28 05:50:28 2008 New Revision: 184388 URL: http://svn.freebsd.org/changeset/base/184388 Log: add more logging Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Tue Oct 28 05:41:44 2008 (r184387) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Tue Oct 28 05:50:28 2008 (r184388) @@ -562,6 +562,7 @@ passout: * to pass an rtentry_info in * */ + printf("transmitting %p \n", m); if (ifp->if_output == ether_output) error = (*ifp->if_output)(ifp, m, NULL, (struct rtentry *)ri); @@ -605,14 +606,18 @@ passout: * to pass an rtentry_info in * */ + printf("transmitting %p \n", m); if (ifp->if_output == ether_output) error = (*ifp->if_output)(ifp, m, NULL, (struct rtentry *)ri); else error = (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, NULL); - } else + } else { + printf("freeing fragment %p error = %d\n", m, error); m_freem(m); + } + } if (error == 0) @@ -621,7 +626,7 @@ passout: done: return (error); bad: - printf("freeing %p\n", m); + printf("freeing %p error = %d \n", m, error); m_freem(m); goto done; } From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 06:11:32 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C072106566C; Tue, 28 Oct 2008 06:11:32 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 895BA8FC16; Tue, 28 Oct 2008 06:11:32 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S6BWwt084403; Tue, 28 Oct 2008 06:11:32 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S6BWqd084388; Tue, 28 Oct 2008 06:11:32 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280611.m9S6BWqd084388@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 06:11:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184390 - in user/kmacy/HEAD_ECMP/sys/powerpc: aim booke conf include mpc85xx powermac X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 06:11:32 -0000 Author: kmacy Date: Tue Oct 28 06:11:31 2008 New Revision: 184390 URL: http://svn.freebsd.org/changeset/base/184390 Log: IF_HEAD part1 184043:184389 Added: user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/lbc.c user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/lbc.h user/kmacy/HEAD_ECMP/sys/powerpc/powermac/cuda.c user/kmacy/HEAD_ECMP/sys/powerpc/powermac/cudavar.h user/kmacy/HEAD_ECMP/sys/powerpc/powermac/macgpio.c user/kmacy/HEAD_ECMP/sys/powerpc/powermac/macgpiovar.h user/kmacy/HEAD_ECMP/sys/powerpc/powermac/pmu.c user/kmacy/HEAD_ECMP/sys/powerpc/powermac/pmuvar.h user/kmacy/HEAD_ECMP/sys/powerpc/powermac/viareg.h Modified: user/kmacy/HEAD_ECMP/sys/powerpc/aim/locore.S user/kmacy/HEAD_ECMP/sys/powerpc/booke/locore.S user/kmacy/HEAD_ECMP/sys/powerpc/booke/pmap.c user/kmacy/HEAD_ECMP/sys/powerpc/booke/trap.c user/kmacy/HEAD_ECMP/sys/powerpc/conf/GENERIC user/kmacy/HEAD_ECMP/sys/powerpc/conf/MPC85XX user/kmacy/HEAD_ECMP/sys/powerpc/include/cpu.h user/kmacy/HEAD_ECMP/sys/powerpc/include/profile.h user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/ocpbus.c user/kmacy/HEAD_ECMP/sys/powerpc/powermac/ata_kauai.c user/kmacy/HEAD_ECMP/sys/powerpc/powermac/dbdma.c user/kmacy/HEAD_ECMP/sys/powerpc/powermac/dbdmavar.h user/kmacy/HEAD_ECMP/sys/powerpc/powermac/macio.c Modified: user/kmacy/HEAD_ECMP/sys/powerpc/aim/locore.S ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/aim/locore.S Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/aim/locore.S Tue Oct 28 06:11:31 2008 (r184390) @@ -111,11 +111,14 @@ openfirmware_entry: srsave: .long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .text + .globl btext +btext: + /* * This symbol is here for the benefit of kvm_mkdb, and is supposed to * mark the start of kernel text. */ - .text .globl kernel_text kernel_text: Modified: user/kmacy/HEAD_ECMP/sys/powerpc/booke/locore.S ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/booke/locore.S Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/booke/locore.S Tue Oct 28 06:11:31 2008 (r184390) @@ -41,11 +41,14 @@ #define TMPSTACKSZ 16384 + .text + .globl btext +btext: + /* * This symbol is here for the benefit of kvm_mkdb, and is supposed to * mark the start of kernel text. */ - .text .globl kernel_text kernel_text: Modified: user/kmacy/HEAD_ECMP/sys/powerpc/booke/pmap.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/booke/pmap.c Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/booke/pmap.c Tue Oct 28 06:11:31 2008 (r184390) @@ -2296,14 +2296,25 @@ mmu_booke_dev_direct_mapped(mmu_t mmu, v static void * mmu_booke_mapdev(mmu_t mmu, vm_offset_t pa, vm_size_t size) { + void *res; uintptr_t va; + vm_size_t sz; va = (pa >= 0x80000000) ? pa : (0xe2000000 + pa); - if (bootverbose) - printf("Wiring VA=%x to PA=%x (size=%x), using TLB1[%d]\n", - va, pa, size, tlb1_idx); - tlb1_set_entry(va, pa, size, _TLB_ENTRY_IO); - return ((void *)va); + res = (void *)va; + + do { + sz = 1 << (ilog2(size) & ~1); + if (bootverbose) + printf("Wiring VA=%x to PA=%x (size=%x), " + "using TLB1[%d]\n", va, pa, sz, tlb1_idx); + tlb1_set_entry(va, pa, sz, _TLB_ENTRY_IO); + size -= sz; + pa += sz; + va += sz; + } while (size > 0); + + return (res); } /* Modified: user/kmacy/HEAD_ECMP/sys/powerpc/booke/trap.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/booke/trap.c Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/booke/trap.c Tue Oct 28 06:11:31 2008 (r184390) @@ -103,9 +103,6 @@ int badaddr_read(void *, size_t, int *); extern char *syscallnames[]; -extern char interrupt_vector_base[]; -extern char interrupt_vector_top[]; - struct powerpc_exception { u_int vector; char *name; Modified: user/kmacy/HEAD_ECMP/sys/powerpc/conf/GENERIC ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/conf/GENERIC Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/conf/GENERIC Tue Oct 28 06:11:31 2008 (r184390) @@ -157,6 +157,11 @@ device fwe # Ethernet over FireWire (n # Misc device powermac_nvram # Open Firmware configuration NVRAM +# ADB support +device adb +device cuda +device pmu + options KTR options KTR_COMPILE=0xffffffff #options KTR_MASK=KTR_SIG Modified: user/kmacy/HEAD_ECMP/sys/powerpc/conf/MPC85XX ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/conf/MPC85XX Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/conf/MPC85XX Tue Oct 28 06:11:31 2008 (r184390) @@ -50,6 +50,7 @@ options WITNESS_SKIPSPIN device ata device atadisk device bpf +device cfi device da device em device ether Modified: user/kmacy/HEAD_ECMP/sys/powerpc/include/cpu.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/include/cpu.h Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/include/cpu.h Tue Oct 28 06:11:31 2008 (r184390) @@ -69,6 +69,9 @@ get_cyclecount(void) #define cpu_getstack(td) ((td)->td_frame->fixreg[1]) #define cpu_spinwait() /* nothing */ +extern char btext[]; +extern char etext[]; + void cpu_halt(void); void cpu_reset(void); void fork_trampoline(void); Modified: user/kmacy/HEAD_ECMP/sys/powerpc/include/profile.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/include/profile.h Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/include/profile.h Tue Oct 28 06:11:31 2008 (r184390) @@ -81,61 +81,87 @@ typedef u_int fptrdiff_t; #define _PLT #endif -#define MCOUNT \ -__asm(" .globl _mcount \n" \ -" .type _mcount,@function \n" \ -"_mcount: \n" \ -" stwu %r1,-64(%r1) /* alloca for reg save space */ \n" \ -" stw %r3,16(%r1) /* save parameter registers, */ \n" \ -" stw %r4,20(%r1) /* r3-10 */ \n" \ -" stw %r5,24(%r1) \n" \ -" stw %r6,28(%r1) \n" \ -" stw %r7,32(%r1) \n" \ -" stw %r8,36(%r1) \n" \ -" stw %r9,40(%r1) \n" \ -" stw %r10,44(%r1) \n" \ -" \n" \ -" mflr %r4 /* link register is 'selfpc' */ \n" \ -" stw %r4,48(%r1) /* save since bl will scrub */ \n" \ -" lwz %r3,68(%r1) /* get 'frompc' from LR-save */ \n" \ -" bl __mcount" _PLT " /* __mcount(frompc, selfpc)*/ \n" \ -" lwz %r3,68(%r1) \n" \ -" mtlr %r3 /* restore caller's lr */ \n" \ -" lwz %r4,48(%r1) \n" \ -" mtctr %r4 /* set up ctr for call back */ \n" \ -" /* note that blr is not used!*/ \n" \ -" lwz %r3,16(%r1) /* restore r3-10 parameters */ \n" \ -" lwz %r4,20(%r1) \n" \ -" lwz %r5,24(%r1) \n" \ -" lwz %r6,28(%r1) \n" \ -" lwz %r7,32(%r1) \n" \ -" lwz %r8,36(%r1) \n" \ -" lwz %r9,40(%r1) \n" \ -" lwz %r10,44(%r1) \n" \ -" addi %r1,%r1,64 /* blow away alloca save area */ \n" \ -" bctr /* return with indirect call */ \n" \ -"_mcount_end: \n" \ -" .size _mcount,_mcount_end-_mcount"); - +#define MCOUNT \ +__asm( " .globl _mcount \n" \ + " .type _mcount,@function \n" \ + " .align 4 \n" \ + "_mcount: \n" \ + " stwu %r1,-64(%r1) \n" \ + " stw %r3,16(%r1) \n" \ + " stw %r4,20(%r1) \n" \ + " stw %r5,24(%r1) \n" \ + " stw %r6,28(%r1) \n" \ + " stw %r7,32(%r1) \n" \ + " stw %r8,36(%r1) \n" \ + " stw %r9,40(%r1) \n" \ + " stw %r10,44(%r1) \n" \ + " mflr %r4 \n" \ + " stw %r4,48(%r1) \n" \ + " lwz %r3,68(%r1) \n" \ + " bl __mcount" _PLT " \n" \ + " lwz %r3,68(%r1) \n" \ + " mtlr %r3 \n" \ + " lwz %r4,48(%r1) \n" \ + " mtctr %r4 \n" \ + " lwz %r3,16(%r1) \n" \ + " lwz %r4,20(%r1) \n" \ + " lwz %r5,24(%r1) \n" \ + " lwz %r6,28(%r1) \n" \ + " lwz %r7,32(%r1) \n" \ + " lwz %r8,36(%r1) \n" \ + " lwz %r9,40(%r1) \n" \ + " lwz %r10,44(%r1) \n" \ + " addi %r1,%r1,64 \n" \ + " bctr \n" \ + "_mcount_end: \n" \ + " .size _mcount,_mcount_end-_mcount"); #ifdef _KERNEL -#define MCOUNT_ENTER(s) s = intr_disable(); -#define MCOUNT_EXIT(s) intr_restore(s); -#define MCOUNT_DECL(s) register_t s - -void bintr(void); -void btrap(void); -void eintr(void); -void user(void); - -#define MCOUNT_FROMPC_USER(pc) \ - ((pc < (uintfptr_t)VM_MAXUSER_ADDRESS) ? (uintfptr_t)user : pc) - -#define MCOUNT_FROMPC_INTR(pc) \ - ((pc >= (uintfptr_t)btrap && pc < (uintfptr_t)eintr) ? \ - ((pc >= (uintfptr_t)bintr) ? (uintfptr_t)bintr : \ - (uintfptr_t)btrap) : ~0U) +#define MCOUNT_ENTER(s) s = intr_disable() +#define MCOUNT_EXIT(s) intr_restore(s) +#define MCOUNT_DECL(s) register_t s; + +#ifndef COMPILING_LINT +#ifdef AIM +#include +#define __PROFILE_VECTOR_BASE EXC_RST +#define __PROFILE_VECTOR_TOP (EXC_LAST + 0x100) +#endif /* AIM */ +#ifdef E500 +extern char interrupt_vector_base[]; +extern char interrupt_vector_top[]; +#define __PROFILE_VECTOR_BASE (uintfptr_t)interrupt_vector_base +#define __PROFILE_VECTOR_TOP (uintfptr_t)interrupt_vector_top +#endif /* E500 */ +#endif /* !COMPILING_LINT */ + +#ifndef __PROFILE_VECTOR_BASE +#define __PROFILE_VECTOR_BASE 0 +#endif +#ifndef __PROFILE_VECTOR_TOP +#define __PROFILE_VECTOR_TOP 1 +#endif + +static __inline void +powerpc_profile_interrupt(void) +{ +} + +static __inline void +powerpc_profile_userspace(void) +{ +} + +#define MCOUNT_FROMPC_USER(pc) \ + ((pc < (uintfptr_t)VM_MAXUSER_ADDRESS) ? \ + (uintfptr_t)powerpc_profile_userspace : pc) + +#define MCOUNT_FROMPC_INTR(pc) \ + ((pc >= __PROFILE_VECTOR_BASE && \ + pc < __PROFILE_VECTOR_TOP) ? \ + (uintfptr_t)powerpc_profile_interrupt : ~0U) +void __mcount(uintfptr_t frompc, uintfptr_t selfpc); #else /* !_KERNEL */ Added: user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/lbc.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/lbc.c Tue Oct 28 06:11:31 2008 (r184390) @@ -0,0 +1,328 @@ +/*- + * Copyright (c) 2006-2008, Juniper Networks, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +struct lbc_softc { + device_t sc_dev; + + struct resource *sc_res; + bus_space_handle_t sc_bsh; + bus_space_tag_t sc_bst; + int sc_rid; + + struct rman sc_rman; + uintptr_t sc_kva; +}; + +struct lbc_devinfo { + int lbc_devtype; + int lbc_memtype; + /* Also the BAR number */ + int lbc_unit; +}; + +static int lbc_probe(device_t); +static int lbc_attach(device_t); +static int lbc_shutdown(device_t); +static int lbc_get_resource(device_t, device_t, int, int, u_long *, + u_long *); +static struct resource *lbc_alloc_resource(device_t, device_t, int, int *, + u_long, u_long, u_long, u_int); +static int lbc_print_child(device_t, device_t); +static int lbc_release_resource(device_t, device_t, int, int, + struct resource *); +static int lbc_read_ivar(device_t, device_t, int, uintptr_t *); + +/* + * Bus interface definition + */ +static device_method_t lbc_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, lbc_probe), + DEVMETHOD(device_attach, lbc_attach), + DEVMETHOD(device_shutdown, lbc_shutdown), + + /* Bus interface */ + DEVMETHOD(bus_print_child, lbc_print_child), + DEVMETHOD(bus_read_ivar, lbc_read_ivar), + DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), + DEVMETHOD(bus_teardown_intr, NULL), + + DEVMETHOD(bus_get_resource, NULL), + DEVMETHOD(bus_alloc_resource, lbc_alloc_resource), + DEVMETHOD(bus_release_resource, lbc_release_resource), + DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), + DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), + + { 0, 0 } +}; + +static driver_t lbc_driver = { + "lbc", + lbc_methods, + sizeof(struct lbc_softc) +}; +devclass_t lbc_devclass; +DRIVER_MODULE(lbc, ocpbus, lbc_driver, lbc_devclass, 0, 0); + +static device_t +lbc_mk_child(device_t dev, int type, int mtype, int unit) +{ + struct lbc_devinfo *dinfo; + device_t child; + + child = device_add_child(dev, NULL, -1); + if (child == NULL) { + device_printf(dev, "could not add child device\n"); + return (NULL); + } + dinfo = malloc(sizeof(struct lbc_devinfo), M_DEVBUF, M_WAITOK | M_ZERO); + dinfo->lbc_devtype = type; + dinfo->lbc_memtype = mtype; + dinfo->lbc_unit = unit; + device_set_ivars(child, dinfo); + return (child); +} + +static int +lbc_probe(device_t dev) +{ + device_t parent; + uintptr_t devtype; + int error; + + parent = device_get_parent(dev); + error = BUS_READ_IVAR(parent, dev, OCPBUS_IVAR_DEVTYPE, &devtype); + if (error) + return (error); + if (devtype != OCPBUS_DEVTYPE_LBC) + return (ENXIO); + + device_set_desc(dev, "Freescale MPC85xx Local Bus Controller"); + return (BUS_PROBE_DEFAULT); +} + +static int +lbc_attach(device_t dev) +{ + struct lbc_softc *sc; + struct rman *rm; + u_long start, size; + int error; + + sc = device_get_softc(dev); + sc->sc_dev = dev; + + sc->sc_rid = 0; + sc->sc_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->sc_rid, + RF_ACTIVE); + if (sc->sc_res == NULL) + return (ENXIO); + + sc->sc_bst = rman_get_bustag(sc->sc_res); + sc->sc_bsh = rman_get_bushandle(sc->sc_res); + + error = bus_get_resource(dev, SYS_RES_MEMORY, 1, &start, &size); + if (error) + goto fail; + + rm = &sc->sc_rman; + rm->rm_type = RMAN_ARRAY; + rm->rm_descr = "MPC85XX Local Bus Space"; + rm->rm_start = start; + rm->rm_end = start + size - 1; + error = rman_init(rm); + if (error) + goto fail; + + error = rman_manage_region(rm, rm->rm_start, rm->rm_end); + if (error) { + rman_fini(rm); + goto fail; + } + + sc->sc_kva = (uintptr_t)pmap_mapdev(start, size); + + lbc_mk_child(dev, LBC_DEVTYPE_CFI, 0, 0); + + return (bus_generic_attach(dev)); + + fail: + bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_rid, sc->sc_res); + return (error); +} + +static int +lbc_shutdown(device_t dev) +{ + + /* TODO */ + return(0); +} + +static struct resource * +lbc_alloc_resource(device_t dev, device_t child, int type, int *rid, + u_long start, u_long end, u_long count, u_int flags) +{ + struct lbc_softc *sc; + struct resource *rv; + struct rman *rm; + int error; + + sc = device_get_softc(dev); + + if (type != SYS_RES_MEMORY && type != SYS_RES_IRQ) + return (NULL); + + /* We only support default allocations. */ + if (start != 0ul || end != ~0ul) + return (NULL); + + if (type == SYS_RES_IRQ) + return (bus_alloc_resource(dev, type, rid, start, end, count, + flags)); + + error = lbc_get_resource(dev, child, type, *rid, &start, &count); + if (error) + return (NULL); + + rm = &sc->sc_rman; + end = start + count - 1; + rv = rman_reserve_resource(rm, start, end, count, flags, child); + if (rv != NULL) { + rman_set_bustag(rv, &bs_be_tag); + rman_set_bushandle(rv, sc->sc_kva + rman_get_start(rv) - + rm->rm_start); + } + return (rv); +} + +static int +lbc_print_child(device_t dev, device_t child) +{ + u_long size, start; + int error, retval, rid; + + retval = bus_print_child_header(dev, child); + + rid = 0; + while (1) { + error = lbc_get_resource(dev, child, SYS_RES_MEMORY, rid, + &start, &size); + if (error) + break; + retval += (rid == 0) ? printf(" iomem ") : printf(","); + retval += printf("%#lx", start); + if (size > 1) + retval += printf("-%#lx", start + size - 1); + rid++; + } + + retval += bus_print_child_footer(dev, child); + return (retval); +} + +static int +lbc_read_ivar(device_t dev, device_t child, int index, uintptr_t *result) +{ + struct lbc_devinfo *dinfo; + + if (device_get_parent(child) != dev) + return (EINVAL); + + dinfo = device_get_ivars(child); + + switch (index) { + case LBC_IVAR_DEVTYPE: + *result = dinfo->lbc_devtype; + return (0); + case LBC_IVAR_CLOCK: + *result = 1843200; + return (0); + case LBC_IVAR_REGSHIFT: + *result = 0; + return (0); + default: + break; + } + return (EINVAL); +} + +static int +lbc_release_resource(device_t dev, device_t child, int type, int rid, + struct resource *res) +{ + + return (rman_release_resource(res)); +} + +static int +lbc_get_resource(device_t dev, device_t child, int type, int rid, + u_long *startp, u_long *countp) +{ + struct lbc_softc *sc; + struct lbc_devinfo *dinfo; + + if (type != SYS_RES_MEMORY) + return (ENOENT); + + /* Currently all devices have a single RID per type. */ + if (rid != 0) + return (ENOENT); + + sc = device_get_softc(dev); + dinfo = device_get_ivars(child); + + switch (dinfo->lbc_devtype) { + case LBC_DEVTYPE_CFI: + *startp = sc->sc_rman.rm_start; + *countp = sc->sc_rman.rm_end - sc->sc_rman.rm_start + 1; + break; + default: + return(EDOOFUS); + } + return(0); +} Added: user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/lbc.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/lbc.h Tue Oct 28 06:11:31 2008 (r184390) @@ -0,0 +1,40 @@ +/*- + * Copyright (c) 2006-2008, Juniper Networks, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + * $FreeBSD$ + */ + +#ifndef _MACHINE_LBC_H_ +#define _MACHINE_LBC_H_ + +#define LBC_IVAR_DEVTYPE 1 +#define LBC_IVAR_CLOCK 2 +#define LBC_IVAR_REGSHIFT 3 + +/* Device types. */ +#define LBC_DEVTYPE_CFI 1 +#define LBC_DEVTYPE_UART 2 + +#endif /* _MACHINE_LBC_H_ */ Modified: user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/ocpbus.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/ocpbus.c Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/mpc85xx/ocpbus.c Tue Oct 28 06:11:31 2008 (r184390) @@ -172,6 +172,10 @@ ocpbus_write_law(int trgt, int type, u_l addr = 0xA0000000; size = 0x10000000; break; + case OCP85XX_TGTIF_LBC: + addr = 0xff800000; + size = 0x00800000; + break; default: return (EINVAL); } Modified: user/kmacy/HEAD_ECMP/sys/powerpc/powermac/ata_kauai.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/powerpc/powermac/ata_kauai.c Tue Oct 28 06:00:13 2008 (r184389) +++ user/kmacy/HEAD_ECMP/sys/powerpc/powermac/ata_kauai.c Tue Oct 28 06:11:31 2008 (r184390) @@ -292,16 +292,12 @@ ata_kauai_attach(device_t dev) #endif /* Set up initial mode */ - if (sc->shasta) - sc->pioconf[0] = sc->pioconf[1] = pio_timing_shasta[4]; - else - sc->pioconf[0] = sc->pioconf[1] = pio_timing_kauai[4]; + sc->pioconf[0] = sc->pioconf[1] = + bus_read_4(sc->sc_memr, PIO_CONFIG_REG) & 0x0f000fff; sc->udmaconf[0] = sc->udmaconf[1] = 0; sc->wdmaconf[0] = sc->wdmaconf[1] = 0; - bus_write_4(sc->sc_memr, PIO_CONFIG_REG, sc->pioconf[0]); - /* Magic FCR value from Apple */ bus_write_4(sc->sc_memr, 0, 0x00000007); Added: user/kmacy/HEAD_ECMP/sys/powerpc/powermac/cuda.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/powerpc/powermac/cuda.c Tue Oct 28 06:11:31 2008 (r184390) @@ -0,0 +1,641 @@ +/*- + * Copyright (c) 2006 Michael Lorenz + * Copyright 2008 by Nathan Whitehorn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include + +#include "cudavar.h" +#include "viareg.h" + +/* + * MacIO interface + */ +static int cuda_probe(device_t); +static int cuda_attach(device_t); +static int cuda_detach(device_t); + +static u_int cuda_adb_send(device_t dev, u_char command_byte, int len, + u_char *data, u_char poll); +static u_int cuda_adb_autopoll(device_t dev, uint16_t mask); +static void cuda_poll(device_t dev); + +static device_method_t cuda_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, cuda_probe), + DEVMETHOD(device_attach, cuda_attach), + DEVMETHOD(device_detach, cuda_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + /* bus interface, for ADB root */ + DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_driver_added, bus_generic_driver_added), + + /* ADB bus interface */ + DEVMETHOD(adb_hb_send_raw_packet, cuda_adb_send), + DEVMETHOD(adb_hb_controller_poll, cuda_poll), + DEVMETHOD(adb_hb_set_autopoll_mask, cuda_adb_autopoll), + + { 0, 0 }, +}; + +static driver_t cuda_driver = { + "cuda", + cuda_methods, + sizeof(struct cuda_softc), +}; + +static devclass_t cuda_devclass; + +DRIVER_MODULE(cuda, macio, cuda_driver, cuda_devclass, 0, 0); +DRIVER_MODULE(adb, cuda, adb_driver, adb_devclass, 0, 0); + +static void cuda_intr(void *arg); +static uint8_t cuda_read_reg(struct cuda_softc *sc, u_int offset); +static void cuda_write_reg(struct cuda_softc *sc, u_int offset, uint8_t value); +static void cuda_idle(struct cuda_softc *); +static void cuda_tip(struct cuda_softc *); +static void cuda_clear_tip(struct cuda_softc *); +static void cuda_in(struct cuda_softc *); +static void cuda_out(struct cuda_softc *); +static void cuda_toggle_ack(struct cuda_softc *); +static void cuda_ack_off(struct cuda_softc *); +static int cuda_intr_state(struct cuda_softc *); + +static int +cuda_probe(device_t dev) +{ + const char *type = ofw_bus_get_type(dev); + + if (strcmp(type, "via-cuda") != 0) + return (ENXIO); + + device_set_desc(dev, CUDA_DEVSTR); + return (0); +} + +static int +cuda_attach(device_t dev) +{ + struct cuda_softc *sc; + + volatile int i; + uint8_t reg; + phandle_t node,child; + + sc = device_get_softc(dev); + sc->sc_dev = dev; + + sc->sc_memrid = 0; + sc->sc_memr = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &sc->sc_memrid, RF_ACTIVE); + + if (sc->sc_memr == NULL) { + device_printf(dev, "Could not alloc mem resource!\n"); + return (ENXIO); + } + + sc->sc_irqrid = 0; + sc->sc_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->sc_irqrid, + RF_ACTIVE); + if (sc->sc_irq == NULL) { + device_printf(dev, "could not allocate interrupt\n"); + return (ENXIO); + } + + if (bus_setup_intr(dev, sc->sc_irq, INTR_TYPE_MISC | INTR_MPSAFE + | INTR_ENTROPY, NULL, cuda_intr, dev, &sc->sc_ih) != 0) { + device_printf(dev, "could not setup interrupt\n"); + bus_release_resource(dev, SYS_RES_IRQ, sc->sc_irqrid, + sc->sc_irq); + return (ENXIO); + } + + mtx_init(&sc->sc_mutex,"cuda",NULL,MTX_DEF | MTX_RECURSE); + + sc->sc_sent = 0; + sc->sc_received = 0; + sc->sc_waiting = 0; + sc->sc_polling = 0; + sc->sc_state = CUDA_NOTREADY; + sc->sc_error = 0; + sc->sc_autopoll = 0; + + /* Init CUDA */ + + reg = cuda_read_reg(sc, vDirB); + reg |= 0x30; /* register B bits 4 and 5: outputs */ + cuda_write_reg(sc, vDirB, reg); + + reg = cuda_read_reg(sc, vDirB); + reg &= 0xf7; /* register B bit 3: input */ + cuda_write_reg(sc, vDirB, reg); + + reg = cuda_read_reg(sc, vACR); + reg &= ~vSR_OUT; /* make sure SR is set to IN */ + cuda_write_reg(sc, vACR, reg); + + cuda_write_reg(sc, vACR, (cuda_read_reg(sc, vACR) | 0x0c) & ~0x10); + + sc->sc_state = CUDA_IDLE; /* used by all types of hardware */ + + cuda_write_reg(sc, vIER, 0x84); /* make sure VIA interrupts are on */ + + cuda_idle(sc); /* reset ADB */ + + /* Reset CUDA */ + + i = cuda_read_reg(sc, vSR); /* clear interrupt */ + cuda_write_reg(sc, vIER, 0x04); /* no interrupts while clearing */ + cuda_idle(sc); /* reset state to idle */ + DELAY(150); + cuda_tip(sc); /* signal start of frame */ + DELAY(150); + cuda_toggle_ack(sc); + DELAY(150); + cuda_clear_tip(sc); + DELAY(150); + cuda_idle(sc); /* back to idle state */ + i = cuda_read_reg(sc, vSR); /* clear interrupt */ + cuda_write_reg(sc, vIER, 0x84); /* ints ok now */ + + /* Initialize child buses (ADB) */ + node = ofw_bus_get_node(dev); + + for (child = OF_child(node); child != 0; child = OF_peer(child)) { + char name[32]; + + memset(name, 0, sizeof(name)); + OF_getprop(child, "name", name, sizeof(name)); + + if (bootverbose) + device_printf(dev, "CUDA child <%s>\n",name); + + if (strncmp(name, "adb", 4) == 0) { + sc->adb_bus = device_add_child(dev,"adb",-1); + } + } + + return (bus_generic_attach(dev)); +} + +static int cuda_detach(device_t dev) { + struct cuda_softc *sc; + + sc = device_get_softc(dev); + + bus_teardown_intr(dev, sc->sc_irq, sc->sc_ih); + bus_release_resource(dev, SYS_RES_IRQ, sc->sc_irqrid, sc->sc_irq); + bus_release_resource(dev, SYS_RES_MEMORY, sc->sc_memrid, sc->sc_memr); + mtx_destroy(&sc->sc_mutex); + + return (bus_generic_detach(dev)); +} + +static uint8_t +cuda_read_reg(struct cuda_softc *sc, u_int offset) { + return (bus_read_1(sc->sc_memr, offset)); +} + +static void +cuda_write_reg(struct cuda_softc *sc, u_int offset, uint8_t value) { + bus_write_1(sc->sc_memr, offset, value); +} + +static void +cuda_idle(struct cuda_softc *sc) +{ + uint8_t reg; + + reg = cuda_read_reg(sc, vBufB); + reg |= (vPB4 | vPB5); + cuda_write_reg(sc, vBufB, reg); +} + +static void +cuda_tip(struct cuda_softc *sc) +{ + uint8_t reg; + + reg = cuda_read_reg(sc, vBufB); + reg &= ~vPB5; + cuda_write_reg(sc, vBufB, reg); +} + +static void +cuda_clear_tip(struct cuda_softc *sc) +{ + uint8_t reg; + + reg = cuda_read_reg(sc, vBufB); + reg |= vPB5; + cuda_write_reg(sc, vBufB, reg); +} + +static void +cuda_in(struct cuda_softc *sc) +{ + uint8_t reg; + + reg = cuda_read_reg(sc, vACR); + reg &= ~vSR_OUT; + cuda_write_reg(sc, vACR, reg); +} + +static void +cuda_out(struct cuda_softc *sc) +{ + uint8_t reg; + + reg = cuda_read_reg(sc, vACR); + reg |= vSR_OUT; + cuda_write_reg(sc, vACR, reg); +} + +static void +cuda_toggle_ack(struct cuda_softc *sc) +{ + uint8_t reg; + + reg = cuda_read_reg(sc, vBufB); + reg ^= vPB4; + cuda_write_reg(sc, vBufB, reg); +} + +static void +cuda_ack_off(struct cuda_softc *sc) +{ + uint8_t reg; + + reg = cuda_read_reg(sc, vBufB); + reg |= vPB4; + cuda_write_reg(sc, vBufB, reg); +} + +static int +cuda_intr_state(struct cuda_softc *sc) +{ + return ((cuda_read_reg(sc, vBufB) & vPB3) == 0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 06:15:18 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC8AC106566B; Tue, 28 Oct 2008 06:15:18 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A771D8FC13; Tue, 28 Oct 2008 06:15:18 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S6FIF9084556; Tue, 28 Oct 2008 06:15:18 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S6FIlq084550; Tue, 28 Oct 2008 06:15:18 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280615.m9S6FIlq084550@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 06:15:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184391 - in user/kmacy/HEAD_ECMP/sys/dev: adb age ar ata ath ath/ath_rate/amrr ath/ath_rate/onoe ath/ath_rate/sample bge ce cfe cfi drm hwpmc iwn lmc mii mxge ofw pci ppbus ppc puc ral... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 06:15:18 -0000 Author: kmacy Date: Tue Oct 28 06:15:18 2008 New Revision: 184391 URL: http://svn.freebsd.org/changeset/base/184391 Log: IF_HEAD part2 184043:184389 Added: user/kmacy/HEAD_ECMP/sys/dev/adb/ user/kmacy/HEAD_ECMP/sys/dev/adb/adb.h user/kmacy/HEAD_ECMP/sys/dev/adb/adb_bus.c user/kmacy/HEAD_ECMP/sys/dev/adb/adb_hb_if.m user/kmacy/HEAD_ECMP/sys/dev/adb/adb_if.m user/kmacy/HEAD_ECMP/sys/dev/adb/adb_kbd.c user/kmacy/HEAD_ECMP/sys/dev/adb/adb_mouse.c user/kmacy/HEAD_ECMP/sys/dev/adb/adbvar.h user/kmacy/HEAD_ECMP/sys/dev/cfi/ user/kmacy/HEAD_ECMP/sys/dev/cfi/cfi_bus_lbc.c user/kmacy/HEAD_ECMP/sys/dev/cfi/cfi_core.c user/kmacy/HEAD_ECMP/sys/dev/cfi/cfi_dev.c user/kmacy/HEAD_ECMP/sys/dev/cfi/cfi_reg.h user/kmacy/HEAD_ECMP/sys/dev/cfi/cfi_var.h user/kmacy/HEAD_ECMP/sys/dev/sdhci/ user/kmacy/HEAD_ECMP/sys/dev/sdhci/sdhci.c user/kmacy/HEAD_ECMP/sys/dev/sdhci/sdhci.h Modified: user/kmacy/HEAD_ECMP/sys/dev/age/if_age.c user/kmacy/HEAD_ECMP/sys/dev/age/if_agevar.h user/kmacy/HEAD_ECMP/sys/dev/ar/if_ar.c user/kmacy/HEAD_ECMP/sys/dev/ata/ata-dma.c user/kmacy/HEAD_ECMP/sys/dev/ata/ata-queue.c user/kmacy/HEAD_ECMP/sys/dev/ath/ah_osdep.c user/kmacy/HEAD_ECMP/sys/dev/ath/ath_rate/amrr/amrr.c user/kmacy/HEAD_ECMP/sys/dev/ath/ath_rate/onoe/onoe.c user/kmacy/HEAD_ECMP/sys/dev/ath/ath_rate/sample/sample.c user/kmacy/HEAD_ECMP/sys/dev/ath/if_ath.c user/kmacy/HEAD_ECMP/sys/dev/ath/if_athrate.h user/kmacy/HEAD_ECMP/sys/dev/ath/if_athvar.h user/kmacy/HEAD_ECMP/sys/dev/bge/if_bge.c user/kmacy/HEAD_ECMP/sys/dev/ce/if_ce.c user/kmacy/HEAD_ECMP/sys/dev/cfe/cfe_console.c user/kmacy/HEAD_ECMP/sys/dev/drm/drm_drv.c user/kmacy/HEAD_ECMP/sys/dev/drm/drm_fops.c user/kmacy/HEAD_ECMP/sys/dev/drm/drm_lock.c user/kmacy/HEAD_ECMP/sys/dev/drm/i915_dma.c user/kmacy/HEAD_ECMP/sys/dev/drm/radeon_cp.c user/kmacy/HEAD_ECMP/sys/dev/drm/radeon_drv.h user/kmacy/HEAD_ECMP/sys/dev/hwpmc/hwpmc_amd.c user/kmacy/HEAD_ECMP/sys/dev/hwpmc/hwpmc_logging.c user/kmacy/HEAD_ECMP/sys/dev/hwpmc/hwpmc_mod.c user/kmacy/HEAD_ECMP/sys/dev/hwpmc/hwpmc_piv.c user/kmacy/HEAD_ECMP/sys/dev/hwpmc/hwpmc_ppro.c user/kmacy/HEAD_ECMP/sys/dev/hwpmc/hwpmc_x86.c user/kmacy/HEAD_ECMP/sys/dev/iwn/if_iwn.c user/kmacy/HEAD_ECMP/sys/dev/lmc/if_lmc.c user/kmacy/HEAD_ECMP/sys/dev/mii/atphy.c user/kmacy/HEAD_ECMP/sys/dev/mii/ciphy.c user/kmacy/HEAD_ECMP/sys/dev/mii/miidevs user/kmacy/HEAD_ECMP/sys/dev/mxge/eth_z8e.h user/kmacy/HEAD_ECMP/sys/dev/mxge/ethp_z8e.h user/kmacy/HEAD_ECMP/sys/dev/mxge/rss_eth_z8e.h user/kmacy/HEAD_ECMP/sys/dev/mxge/rss_ethp_z8e.h user/kmacy/HEAD_ECMP/sys/dev/ofw/ofw_console.c user/kmacy/HEAD_ECMP/sys/dev/pci/pci.c user/kmacy/HEAD_ECMP/sys/dev/pci/pcireg.h user/kmacy/HEAD_ECMP/sys/dev/ppbus/if_plip.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/immio.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/lpbb.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/lpt.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/pcfclock.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/ppb_base.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/ppb_msq.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/ppbconf.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/ppbconf.h user/kmacy/HEAD_ECMP/sys/dev/ppbus/ppi.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/pps.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/vpo.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/vpoio.c user/kmacy/HEAD_ECMP/sys/dev/ppbus/vpoio.h user/kmacy/HEAD_ECMP/sys/dev/ppc/ppc.c user/kmacy/HEAD_ECMP/sys/dev/ppc/ppcreg.h user/kmacy/HEAD_ECMP/sys/dev/puc/pucdata.c user/kmacy/HEAD_ECMP/sys/dev/ral/rt2560.c user/kmacy/HEAD_ECMP/sys/dev/ral/rt2661.c user/kmacy/HEAD_ECMP/sys/dev/ray/if_ray.c user/kmacy/HEAD_ECMP/sys/dev/ray/if_rayvar.h user/kmacy/HEAD_ECMP/sys/dev/sound/pci/hda/hdac.c user/kmacy/HEAD_ECMP/sys/dev/sr/if_sr.c user/kmacy/HEAD_ECMP/sys/dev/uart/uart_tty.c user/kmacy/HEAD_ECMP/sys/dev/usb/if_zyd.c user/kmacy/HEAD_ECMP/sys/dev/usb/u3g.c user/kmacy/HEAD_ECMP/sys/dev/usb/ubsa.c user/kmacy/HEAD_ECMP/sys/dev/usb/ucom.c user/kmacy/HEAD_ECMP/sys/dev/usb/udbp.c user/kmacy/HEAD_ECMP/sys/dev/usb/ufoma.c user/kmacy/HEAD_ECMP/sys/dev/wpi/if_wpi.c user/kmacy/HEAD_ECMP/sys/dev/xen/console/console.c Added: user/kmacy/HEAD_ECMP/sys/dev/adb/adb.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/dev/adb/adb.h Tue Oct 28 06:15:18 2008 (r184391) @@ -0,0 +1,78 @@ +/*- + * Copyright (C) 2008 Nathan Whitehorn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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. + * + * $FreeBSD$ + */ + +#ifndef _POWERPC_ADB_H_ +#define _POWERPC_ADB_H_ + +#include "adb_hb_if.h" +#include "adb_if.h" + +enum { + ADB_COMMAND_FLUSH = 0, + ADB_COMMAND_LISTEN = 2, + ADB_COMMAND_TALK = 3, +}; + +enum { + ADB_DEVICE_DONGLE = 0x01, + ADB_DEVICE_KEYBOARD = 0x02, + ADB_DEVICE_MOUSE = 0x03, + ADB_DEVICE_TABLET = 0x04, + ADB_DEVICE_MODEM = 0x05, + + ADB_DEVICE_MISC = 0x07 +}; + +struct adb_devinfo { + uint8_t address; + uint8_t default_address; + uint8_t handler_id; + + uint16_t register3; +}; + +/* Pass packets down through the bus manager */ +u_int adb_send_packet(device_t dev, u_char command, u_char reg, int len, + u_char *data); +u_int adb_set_autopoll(device_t dev, u_char enable); + +/* Pass packets up from the interface */ +u_int adb_receive_raw_packet(device_t dev, u_char status, u_char command, + int len, u_char *data); + +uint8_t adb_get_device_type(device_t dev); +uint8_t adb_get_device_handler(device_t dev); +uint8_t adb_set_device_handler(device_t dev, uint8_t newhandler); + +uint8_t adb_read_register(device_t dev, u_char reg, size_t *len, void *data); + +/* Bits for implementing ADB host bus adapters */ +extern devclass_t adb_devclass; +extern driver_t adb_driver; + +#endif + Added: user/kmacy/HEAD_ECMP/sys/dev/adb/adb_bus.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/dev/adb/adb_bus.c Tue Oct 28 06:15:18 2008 (r184391) @@ -0,0 +1,384 @@ +/*- + * Copyright (C) 2008 Nathan Whitehorn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include "adb.h" +#include "adbvar.h" + +static int adb_bus_probe(device_t dev); +static int adb_bus_attach(device_t dev); +static int adb_bus_detach(device_t dev); +static void adb_probe_nomatch(device_t dev, device_t child); +static int adb_print_child(device_t dev, device_t child); + +static int adb_send_raw_packet_sync(device_t dev, uint8_t to, uint8_t command, uint8_t reg, int len, u_char *data); + +static char *adb_device_string[] = { + "HOST", "dongle", "keyboard", "mouse", "tablet", "modem", "RESERVED", "misc" +}; + +static device_method_t adb_bus_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, adb_bus_probe), + DEVMETHOD(device_attach, adb_bus_attach), + DEVMETHOD(device_detach, adb_bus_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + /* Bus Interface */ + DEVMETHOD(bus_probe_nomatch, adb_probe_nomatch), + DEVMETHOD(bus_print_child, adb_print_child), + + { 0, 0 }, +}; + +driver_t adb_driver = { + "adb", + adb_bus_methods, + sizeof(struct adb_softc), +}; + +devclass_t adb_devclass; + +static int +adb_bus_probe(device_t dev) +{ + device_set_desc(dev, "Apple Desktop Bus"); + return (0); +} + +static int +adb_bus_attach(device_t dev) +{ + struct adb_softc *sc = device_get_softc(dev); + uint8_t i, next_free; + uint16_t r3; + + sc->sc_dev = dev; + sc->parent = device_get_parent(dev); + + sc->packet_reply = 0; + sc->autopoll_mask = 0; + + mtx_init(&sc->sc_sync_mtx,"adbsyn",NULL,MTX_DEF | MTX_RECURSE); + + /* Initialize devinfo */ + for (i = 0; i < 16; i++) { + sc->devinfo[i].address = i; + sc->devinfo[i].default_address = 0; + } + + /* Reset ADB bus */ + adb_send_raw_packet_sync(dev,0,ADB_COMMAND_BUS_RESET,0,0,NULL); + DELAY(1500); + + /* Enumerate bus */ + next_free = 8; + + for (i = 1; i < 7; i++) { + int8_t first_relocated = -1; + int reply = 0; + + do { + reply = adb_send_raw_packet_sync(dev,i, + ADB_COMMAND_TALK,3,0,NULL); + + if (reply) { + /* If we got a response, relocate to next_free */ + r3 = sc->devinfo[i].register3; + r3 &= 0xf000; + r3 |= ((uint16_t)(next_free) & 0x000f) << 8; + r3 |= 0x00fe; + + adb_send_raw_packet_sync(dev,i, ADB_COMMAND_LISTEN,3, + sizeof(uint16_t),(u_char *)(&r3)); + + adb_send_raw_packet_sync(dev,next_free, + ADB_COMMAND_TALK,3,0,NULL); + + sc->devinfo[next_free].default_address = i; + if (first_relocated < 0) + first_relocated = next_free; + + next_free++; + } else if (first_relocated > 0) { + /* Collisions removed, relocate first device back */ + + r3 = sc->devinfo[i].register3; + r3 &= 0xf000; + r3 |= ((uint16_t)(i) & 0x000f) << 8; + + adb_send_raw_packet_sync(dev,first_relocated, + ADB_COMMAND_LISTEN,3, + sizeof(uint16_t),(u_char *)(&r3)); + adb_send_raw_packet_sync(dev,i, + ADB_COMMAND_TALK,3,0,NULL); + + sc->devinfo[i].default_address = i; + sc->devinfo[(int)(first_relocated)].default_address = 0; + break; + } + } while (reply); + } + + for (i = 0; i < 16; i++) { + if (sc->devinfo[i].default_address) { + sc->children[i] = device_add_child(dev, NULL, -1); + device_set_ivars(sc->children[i], &sc->devinfo[i]); + } + } + + return (bus_generic_attach(dev)); +} + +static int adb_bus_detach(device_t dev) +{ + struct adb_softc *sc = device_get_softc(dev); + + mtx_destroy(&sc->sc_sync_mtx); + + return (bus_generic_detach(dev)); +} + + +static void +adb_probe_nomatch(device_t dev, device_t child) +{ + struct adb_devinfo *dinfo; + + if (bootverbose) { + dinfo = device_get_ivars(child); + + device_printf(dev,"ADB %s at device %d (no driver attached)\n", + adb_device_string[dinfo->default_address],dinfo->address); + } +} + +u_int +adb_receive_raw_packet(device_t dev, u_char status, u_char command, int len, + u_char *data) +{ + struct adb_softc *sc = device_get_softc(dev); + u_char addr = command >> 4; + + if (len > 0 && (command & 0x0f) == ((ADB_COMMAND_TALK << 2) | 3)) { + memcpy(&sc->devinfo[addr].register3,data,2); + sc->devinfo[addr].handler_id = data[1]; + } + + if (sc->sync_packet == command) { + memcpy(sc->syncreg,data,(len > 8) ? 8 : len); + atomic_store_rel_int(&sc->packet_reply,len + 1); + } + + if (sc->children[addr] != NULL) { + ADB_RECEIVE_PACKET(sc->children[addr],status, + (command & 0x0f) >> 2,command & 0x03,len,data); + } + + return (0); +} + +static int +adb_print_child(device_t dev, device_t child) +{ + struct adb_devinfo *dinfo; + int retval = 0; + + dinfo = device_get_ivars(child); + + retval += bus_print_child_header(dev,child); + printf(" at device %d",dinfo->address); + retval += bus_print_child_footer(dev, child); + + return (retval); +} + +u_int +adb_send_packet(device_t dev, u_char command, u_char reg, int len, u_char *data) +{ + u_char command_byte = 0; + struct adb_devinfo *dinfo; + struct adb_softc *sc; + + sc = device_get_softc(device_get_parent(dev)); + dinfo = device_get_ivars(dev); + + command_byte |= dinfo->address << 4; + command_byte |= command << 2; + command_byte |= reg; + + ADB_HB_SEND_RAW_PACKET(sc->parent, command_byte, len, data, 1); + + return (0); +} + +u_int +adb_set_autopoll(device_t dev, u_char enable) +{ + struct adb_devinfo *dinfo; + struct adb_softc *sc; + uint16_t mod = 0; + + sc = device_get_softc(device_get_parent(dev)); + dinfo = device_get_ivars(dev); + + mod = enable << dinfo->address; + if (enable) { + sc->autopoll_mask |= mod; + } else { + mod = ~mod; + sc->autopoll_mask &= mod; + } + + ADB_HB_SET_AUTOPOLL_MASK(sc->parent,sc->autopoll_mask); + + return (0); +} + +uint8_t +adb_get_device_type(device_t dev) +{ + struct adb_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + return (dinfo->default_address); +} + +uint8_t +adb_get_device_handler(device_t dev) +{ + struct adb_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + return (dinfo->handler_id); +} + +static int +adb_send_raw_packet_sync(device_t dev, uint8_t to, uint8_t command, + uint8_t reg, int len, u_char *data) +{ + u_char command_byte = 0; + struct adb_softc *sc; + int result = -1; + int i = 0; + + sc = device_get_softc(dev); + + command_byte |= to << 4; + command_byte |= command << 2; + command_byte |= reg; + + /* Wait if someone else has a synchronous request pending */ + mtx_lock(&sc->sc_sync_mtx); + + sc->packet_reply = 0; + sc->sync_packet = command_byte; + + ADB_HB_SEND_RAW_PACKET(sc->parent, command_byte, len, data, 1); + + while (!atomic_fetchadd_int(&sc->packet_reply,0)) { + /* Sometimes CUDA controllers hang up during cold boots. + Try poking them. */ + if (i > 10) + ADB_HB_CONTROLLER_POLL(sc->parent); + + DELAY(100); + i++; + } + + result = sc->packet_reply - 1; + + /* Clear packet sync */ + sc->packet_reply = 0; + sc->sync_packet = 0xffff; /* We can't match a 16 bit value */ + + mtx_unlock(&sc->sc_sync_mtx); + + return (result); +} + +uint8_t +adb_set_device_handler(device_t dev, uint8_t newhandler) +{ + struct adb_softc *sc; + struct adb_devinfo *dinfo; + uint16_t newr3; + + dinfo = device_get_ivars(dev); + sc = device_get_softc(device_get_parent(dev)); + + newr3 = dinfo->register3 & 0xff00; + newr3 |= (uint16_t)(newhandler); + + adb_send_raw_packet_sync(sc->sc_dev,dinfo->address, + ADB_COMMAND_LISTEN, 3, sizeof(uint16_t), (u_char *)(&newr3)); + adb_send_raw_packet_sync(sc->sc_dev,dinfo->address, + ADB_COMMAND_TALK, 3, 0, NULL); + + return (dinfo->handler_id); +} + +uint8_t +adb_read_register(device_t dev, u_char reg, + size_t *len, void *data) +{ + struct adb_softc *sc; + struct adb_devinfo *dinfo; + size_t orig_len; + + dinfo = device_get_ivars(dev); + sc = device_get_softc(device_get_parent(dev)); + + orig_len = *len; + + mtx_lock(&sc->sc_sync_mtx); + + *len = adb_send_raw_packet_sync(sc->sc_dev,dinfo->address, + ADB_COMMAND_TALK, reg, 0, NULL); + + if (*len > 0) + memcpy(data,sc->syncreg,*len); + + mtx_unlock(&sc->sc_sync_mtx); + + return ((*len > 0) ? 0 : -1); +} + Added: user/kmacy/HEAD_ECMP/sys/dev/adb/adb_hb_if.m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/dev/adb/adb_hb_if.m Tue Oct 28 06:15:18 2008 (r184391) @@ -0,0 +1,58 @@ +#- +# Copyright (c) 2008 Nathan Whitehorn +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +# +# $FreeBSD$ +# + +#include + +#include + +INTERFACE adb_hb; + +# +# Bus level operations. These are used by the ADB bus manager, and are +# required to inplement an ADB interface. +# + +METHOD u_int send_raw_packet { + device_t dev; + u_char command_byte; + + int len; + u_char *data; + u_char poll; +}; + +METHOD u_int controller_poll { + device_t dev; +}; + +METHOD u_int set_autopoll_mask { + device_t dev; + + uint16_t mask; +}; + Added: user/kmacy/HEAD_ECMP/sys/dev/adb/adb_if.m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/dev/adb/adb_if.m Tue Oct 28 06:15:18 2008 (r184391) @@ -0,0 +1,49 @@ +#- +# Copyright (c) 2008 Nathan Whitehorn +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +# +# $FreeBSD$ +# + +#include + +#include + +INTERFACE adb; + +# +# Driver level operations +# + +METHOD u_int receive_packet { + device_t dev; + + u_char status; + u_char command; + u_char reg; + + int len; + u_char *data; +}; + Added: user/kmacy/HEAD_ECMP/sys/dev/adb/adb_kbd.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/dev/adb/adb_kbd.c Tue Oct 28 06:15:18 2008 (r184391) @@ -0,0 +1,692 @@ +/*- + * Copyright (C) 2008 Nathan Whitehorn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "opt_kbd.h" +#include +#include + +#include +#include + +#include "adb.h" + +#define KBD_DRIVER_NAME "akbd" + +#define AKBD_EMULATE_ATKBD 1 + +static int adb_kbd_probe(device_t dev); +static int adb_kbd_attach(device_t dev); +static int adb_kbd_detach(device_t dev); +static void akbd_repeat(void *xsc); + +static u_int adb_kbd_receive_packet(device_t dev, u_char status, + u_char command, u_char reg, int len, u_char *data); + +struct adb_kbd_softc { + keyboard_t sc_kbd; + + device_t sc_dev; + struct mtx sc_mutex; + struct cv sc_cv; + + int sc_mode; + int sc_state; + + int have_led_control; + + uint8_t buffer[8]; + volatile int buffers; + + struct callout sc_repeater; + int sc_repeatstart; + int sc_repeatcontinue; + uint8_t last_press; +}; + +static device_method_t adb_kbd_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, adb_kbd_probe), + DEVMETHOD(device_attach, adb_kbd_attach), + DEVMETHOD(device_detach, adb_kbd_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + /* ADB interface */ + DEVMETHOD(adb_receive_packet, adb_kbd_receive_packet), + + { 0, 0 } +}; + +static driver_t adb_kbd_driver = { + "akbd", + adb_kbd_methods, + sizeof(struct adb_kbd_softc), +}; + +static devclass_t adb_kbd_devclass; + +DRIVER_MODULE(akbd, adb, adb_kbd_driver, adb_kbd_devclass, 0, 0); + +static const uint8_t adb_to_at_scancode_map[128] = { 30, 31, 32, 33, 35, 34, + 44, 45, 46, 47, 0, 48, 16, 17, 18, 19, 21, 20, 2, 3, 4, 5, 7, 6, 13, + 10, 8, 12, 9, 11, 27, 24, 22, 26, 23, 25, 28, 38, 36, 40, 37, 39, 43, + 51, 53, 49, 50, 52, 15, 57, 41, 14, 0, 1, 29, 0, 42, 58, 56, 97, 98, + 100, 95, 0, 0, 83, 0, 55, 0, 78, 0, 69, 0, 0, 0, 91, 89, 0, 74, 13, 0, + 0, 82, 79, 80, 81, 75, 76, 77, 71, 0, 72, 73, 0, 0, 0, 63, 64, 65, 61, + 66, 67, 0, 87, 0, 105, 0, 70, 0, 68, 0, 88, 0, 107, 102, 94, 96, 103, + 62, 99, 60, 101, 59, 54, 93, 90, 0, 0 }; + +/* keyboard driver declaration */ +static int akbd_configure(int flags); +static kbd_probe_t akbd_probe; +static kbd_init_t akbd_init; +static kbd_term_t akbd_term; +static kbd_intr_t akbd_interrupt; +static kbd_test_if_t akbd_test_if; +static kbd_enable_t akbd_enable; +static kbd_disable_t akbd_disable; +static kbd_read_t akbd_read; +static kbd_check_t akbd_check; +static kbd_read_char_t akbd_read_char; +static kbd_check_char_t akbd_check_char; +static kbd_ioctl_t akbd_ioctl; +static kbd_lock_t akbd_lock; +static kbd_clear_state_t akbd_clear_state; +static kbd_get_state_t akbd_get_state; +static kbd_set_state_t akbd_set_state; +static kbd_poll_mode_t akbd_poll; + +keyboard_switch_t akbdsw = { + akbd_probe, + akbd_init, + akbd_term, + akbd_interrupt, + akbd_test_if, + akbd_enable, + akbd_disable, + akbd_read, + akbd_check, + akbd_read_char, + akbd_check_char, + akbd_ioctl, + akbd_lock, + akbd_clear_state, + akbd_get_state, + akbd_set_state, + genkbd_get_fkeystr, + akbd_poll, + genkbd_diag, +}; + +KEYBOARD_DRIVER(akbd, akbdsw, akbd_configure); + +static int +adb_kbd_probe(device_t dev) +{ + uint8_t type; + + type = adb_get_device_type(dev); + + if (type != ADB_DEVICE_KEYBOARD) + return (ENXIO); + + switch(adb_get_device_handler(dev)) { + case 1: + device_set_desc(dev,"Apple Standard Keyboard"); + break; + case 2: + device_set_desc(dev,"Apple Extended Keyboard"); + break; + case 4: + device_set_desc(dev,"Apple ISO Keyboard"); + break; + case 5: + device_set_desc(dev,"Apple Extended ISO Keyboard"); + break; + case 8: + device_set_desc(dev,"Apple Keyboard II"); + break; + case 9: + device_set_desc(dev,"Apple ISO Keyboard II"); + break; + case 12: + device_set_desc(dev,"PowerBook Keyboard"); + break; + case 13: + device_set_desc(dev,"PowerBook ISO Keyboard"); + break; + case 24: + device_set_desc(dev,"PowerBook Extended Keyboard"); + break; + case 27: + device_set_desc(dev,"Apple Design Keyboard"); + break; + case 195: + device_set_desc(dev,"PowerBook G3 Keyboard"); + break; + case 196: + device_set_desc(dev,"iBook Keyboard"); + break; + default: + device_set_desc(dev,"ADB Keyboard"); + break; + } + + return (0); +} + +static int +ms_to_ticks(int ms) +{ + if (hz > 1000) + return ms*(hz/1000); + + return ms/(1000/hz); +} + +static int +adb_kbd_attach(device_t dev) +{ + struct adb_kbd_softc *sc; + keyboard_switch_t *sw; + + sw = kbd_get_switch(KBD_DRIVER_NAME); + if (sw == NULL) { + return ENXIO; + } + + sc = device_get_softc(dev); + sc->sc_dev = dev; + sc->sc_mode = K_RAW; + sc->sc_state = 0; + sc->have_led_control = 0; + sc->buffers = 0; + + /* Try stepping forward to the extended keyboard protocol */ + adb_set_device_handler(dev,3); + + mtx_init(&sc->sc_mutex,KBD_DRIVER_NAME,MTX_DEF,0); + cv_init(&sc->sc_cv,KBD_DRIVER_NAME); + callout_init(&sc->sc_repeater, 0); + +#ifdef AKBD_EMULATE_ATKBD + kbd_init_struct(&sc->sc_kbd, KBD_DRIVER_NAME, KB_101, 0, 0, 0, 0); + kbd_set_maps(&sc->sc_kbd, &key_map, &accent_map, fkey_tab, + sizeof(fkey_tab) / sizeof(fkey_tab[0])); +#else + #error ADB raw mode not implemented +#endif + + KBD_FOUND_DEVICE(&sc->sc_kbd); + KBD_PROBE_DONE(&sc->sc_kbd); + KBD_INIT_DONE(&sc->sc_kbd); + KBD_CONFIG_DONE(&sc->sc_kbd); + + (*sw->enable)(&sc->sc_kbd); + + kbd_register(&sc->sc_kbd); + +#ifdef KBD_INSTALL_CDEV + if (kbd_attach(&sc->sc_kbd)) { + adb_kbd_detach(dev); + return ENXIO; + } +#endif + + adb_set_autopoll(dev,1); + + /* Check (asynchronously) if we can read out the LED state from + this keyboard by reading the key state register */ + adb_send_packet(dev,ADB_COMMAND_TALK,2,0,NULL); + + return (0); +} + +static int +adb_kbd_detach(device_t dev) +{ + struct adb_kbd_softc *sc; + keyboard_t *kbd; + + sc = device_get_softc(dev); + + adb_set_autopoll(dev,0); + callout_stop(&sc->sc_repeater); + + mtx_lock(&sc->sc_mutex); + + kbd = kbd_get_keyboard(kbd_find_keyboard(KBD_DRIVER_NAME, + device_get_unit(dev))); + + kbdd_disable(kbd); + +#ifdef KBD_INSTALL_CDEV + kbd_detach(kbd); +#endif + + kbdd_term(kbd); + + mtx_unlock(&sc->sc_mutex); + + mtx_destroy(&sc->sc_mutex); + cv_destroy(&sc->sc_cv); + + return (0); +} + +static u_int +adb_kbd_receive_packet(device_t dev, u_char status, + u_char command, u_char reg, int len, u_char *data) +{ + struct adb_kbd_softc *sc; + + sc = device_get_softc(dev); + + if (command != ADB_COMMAND_TALK) + return 0; + + if (reg == 2 && len == 2) { + sc->have_led_control = 1; + return 0; + } + + if (reg != 0 || len != 2) + return (0); + + mtx_lock(&sc->sc_mutex); + if ((data[0] & 0x7f) == 57 && sc->buffers < 7) { + /* Fake the down/up cycle for caps lock */ + sc->buffer[sc->buffers++] = data[0] & 0x7f; + sc->buffer[sc->buffers++] = (data[0] & 0x7f) | (1 << 7); + } else { + sc->buffer[sc->buffers++] = data[0]; + } + + if (sc->buffer[sc->buffers-1] < 0xff) + sc->last_press = sc->buffer[sc->buffers-1]; + + if ((data[1] & 0x7f) == 57 && sc->buffers < 7) { + /* Fake the down/up cycle for caps lock */ + sc->buffer[sc->buffers++] = data[1] & 0x7f; + sc->buffer[sc->buffers++] = (data[1] & 0x7f) | (1 << 7); + } else { + sc->buffer[sc->buffers++] = data[1]; + } + + if (sc->buffer[sc->buffers-1] < 0xff) + sc->last_press = sc->buffer[sc->buffers-1]; + + /* Stop any existing key repeating */ + callout_stop(&sc->sc_repeater); + + /* Schedule a repeat callback on keydown */ + if (!(sc->last_press & (1 << 7))) { + callout_reset(&sc->sc_repeater, + ms_to_ticks(sc->sc_kbd.kb_delay1), akbd_repeat, sc); + } + mtx_unlock(&sc->sc_mutex); + + cv_broadcast(&sc->sc_cv); + + if (KBD_IS_ACTIVE(&sc->sc_kbd) && KBD_IS_BUSY(&sc->sc_kbd)) { + sc->sc_kbd.kb_callback.kc_func(&sc->sc_kbd, + KBDIO_KEYINPUT, sc->sc_kbd.kb_callback.kc_arg); + } + + return (0); +} + +static void +akbd_repeat(void *xsc) { + struct adb_kbd_softc *sc = xsc; + int notify_kbd = 0; + + /* Fake an up/down key repeat so long as we have the + free buffers */ + mtx_lock(&sc->sc_mutex); + if (sc->buffers < 7) { + sc->buffer[sc->buffers++] = sc->last_press | (1 << 7); + sc->buffer[sc->buffers++] = sc->last_press; + + notify_kbd = 1; + } + mtx_unlock(&sc->sc_mutex); + + if (notify_kbd && KBD_IS_ACTIVE(&sc->sc_kbd) + && KBD_IS_BUSY(&sc->sc_kbd)) { + sc->sc_kbd.kb_callback.kc_func(&sc->sc_kbd, + KBDIO_KEYINPUT, sc->sc_kbd.kb_callback.kc_arg); + } + + /* Reschedule the callout */ + callout_reset(&sc->sc_repeater, ms_to_ticks(sc->sc_kbd.kb_delay2), + akbd_repeat, sc); +} + +static int +akbd_configure(int flags) +{ + return 0; +} + +static int +akbd_probe(int unit, void *arg, int flags) +{ + return 0; +} + +static int *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 06:15:45 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80E1C1065671; Tue, 28 Oct 2008 06:15:45 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6BBA48FC23; Tue, 28 Oct 2008 06:15:45 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S6Fj33084639; Tue, 28 Oct 2008 06:15:45 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S6Fhqn084602; Tue, 28 Oct 2008 06:15:43 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280615.m9S6Fhqn084602@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 06:15:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184392 - in user/kmacy/HEAD_ECMP/sys: amd64/amd64 amd64/include amd64/linux32 arm/arm arm/at91 arm/conf cam/scsi compat/freebsd32 compat/linux conf contrib/altq/altq contrib/ipfilter/n... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 06:15:45 -0000 Author: kmacy Date: Tue Oct 28 06:15:43 2008 New Revision: 184392 URL: http://svn.freebsd.org/changeset/base/184392 Log: IF_HEAD part3 184043:184389 Added: user/kmacy/HEAD_ECMP/sys/arm/conf/DEFAULTS user/kmacy/HEAD_ECMP/sys/mips/conf/DEFAULTS user/kmacy/HEAD_ECMP/sys/modules/sdhci/ user/kmacy/HEAD_ECMP/sys/modules/sdhci/Makefile user/kmacy/HEAD_ECMP/sys/security/mac_bsdextended/ugidfw_internal.h user/kmacy/HEAD_ECMP/sys/security/mac_bsdextended/ugidfw_system.c user/kmacy/HEAD_ECMP/sys/security/mac_bsdextended/ugidfw_vnode.c user/kmacy/HEAD_ECMP/sys/sys/cfictl.h Modified: user/kmacy/HEAD_ECMP/sys/amd64/amd64/identcpu.c user/kmacy/HEAD_ECMP/sys/amd64/amd64/initcpu.c user/kmacy/HEAD_ECMP/sys/amd64/amd64/local_apic.c user/kmacy/HEAD_ECMP/sys/amd64/amd64/prof_machdep.c user/kmacy/HEAD_ECMP/sys/amd64/amd64/tsc.c user/kmacy/HEAD_ECMP/sys/amd64/include/clock.h user/kmacy/HEAD_ECMP/sys/amd64/include/md_var.h user/kmacy/HEAD_ECMP/sys/amd64/include/specialreg.h user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux.h user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux32_sysvec.c user/kmacy/HEAD_ECMP/sys/arm/arm/undefined.c user/kmacy/HEAD_ECMP/sys/arm/at91/at91.c user/kmacy/HEAD_ECMP/sys/arm/conf/AVILA user/kmacy/HEAD_ECMP/sys/arm/conf/BWCT user/kmacy/HEAD_ECMP/sys/arm/conf/CRB user/kmacy/HEAD_ECMP/sys/arm/conf/DB-78XXX user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F5XXX user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F6XXX user/kmacy/HEAD_ECMP/sys/arm/conf/EP80219 user/kmacy/HEAD_ECMP/sys/arm/conf/GUMSTIX user/kmacy/HEAD_ECMP/sys/arm/conf/HL200 user/kmacy/HEAD_ECMP/sys/arm/conf/IQ31244 user/kmacy/HEAD_ECMP/sys/arm/conf/KB920X user/kmacy/HEAD_ECMP/sys/arm/conf/NSLU user/kmacy/HEAD_ECMP/sys/arm/conf/SIMICS user/kmacy/HEAD_ECMP/sys/arm/conf/SKYEYE user/kmacy/HEAD_ECMP/sys/cam/scsi/scsi_target.c user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_misc.c user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_proto.h user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscall.h user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscalls.c user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_sysent.c user/kmacy/HEAD_ECMP/sys/compat/freebsd32/syscalls.master user/kmacy/HEAD_ECMP/sys/compat/linux/linux_ioctl.c user/kmacy/HEAD_ECMP/sys/compat/linux/linux_signal.c user/kmacy/HEAD_ECMP/sys/compat/linux/linux_signal.h user/kmacy/HEAD_ECMP/sys/compat/linux/linux_socket.c user/kmacy/HEAD_ECMP/sys/compat/linux/linux_util.c user/kmacy/HEAD_ECMP/sys/conf/NOTES user/kmacy/HEAD_ECMP/sys/conf/files user/kmacy/HEAD_ECMP/sys/conf/files.arm user/kmacy/HEAD_ECMP/sys/conf/files.mips user/kmacy/HEAD_ECMP/sys/conf/files.powerpc user/kmacy/HEAD_ECMP/sys/conf/options user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_cbq.c user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_cdnr.c user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_hfsc.c user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_priq.c user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_red.c user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_rio.c user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_rmclass.c user/kmacy/HEAD_ECMP/sys/contrib/altq/altq/altq_subr.c user/kmacy/HEAD_ECMP/sys/contrib/ipfilter/netinet/ip_compat.h user/kmacy/HEAD_ECMP/sys/fs/cd9660/cd9660_node.c user/kmacy/HEAD_ECMP/sys/fs/cd9660/cd9660_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/cd9660/cd9660_vnops.c user/kmacy/HEAD_ECMP/sys/fs/fdescfs/fdesc_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/fdescfs/fdesc_vnops.c user/kmacy/HEAD_ECMP/sys/fs/fifofs/fifo_vnops.c user/kmacy/HEAD_ECMP/sys/fs/hpfs/hpfs_subr.c user/kmacy/HEAD_ECMP/sys/fs/hpfs/hpfs_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/hpfs/hpfs_vnops.c user/kmacy/HEAD_ECMP/sys/fs/msdosfs/msdosfs_denode.c user/kmacy/HEAD_ECMP/sys/fs/msdosfs/msdosfs_vnops.c user/kmacy/HEAD_ECMP/sys/fs/ntfs/ntfs_subr.c user/kmacy/HEAD_ECMP/sys/fs/ntfs/ntfs_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/ntfs/ntfs_vnops.c user/kmacy/HEAD_ECMP/sys/fs/nullfs/null_subr.c user/kmacy/HEAD_ECMP/sys/fs/nullfs/null_vnops.c user/kmacy/HEAD_ECMP/sys/fs/nwfs/nwfs_node.c user/kmacy/HEAD_ECMP/sys/fs/nwfs/nwfs_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/portalfs/portal_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/portalfs/portal_vnops.c user/kmacy/HEAD_ECMP/sys/fs/pseudofs/pseudofs.c user/kmacy/HEAD_ECMP/sys/fs/pseudofs/pseudofs_vncache.c user/kmacy/HEAD_ECMP/sys/fs/smbfs/smbfs_node.c user/kmacy/HEAD_ECMP/sys/fs/smbfs/smbfs_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/udf/udf_vfsops.c user/kmacy/HEAD_ECMP/sys/fs/udf/udf_vnops.c user/kmacy/HEAD_ECMP/sys/fs/unionfs/union_subr.c user/kmacy/HEAD_ECMP/sys/geom/geom_disk.c user/kmacy/HEAD_ECMP/sys/geom/part/g_part_bsd.c user/kmacy/HEAD_ECMP/sys/geom/part/g_part_pc98.c user/kmacy/HEAD_ECMP/sys/geom/part/g_part_vtoc8.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum.h user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_drive.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_init.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_plex.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_raid5.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_rm.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_state.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_subr.c user/kmacy/HEAD_ECMP/sys/geom/vinum/geom_vinum_volume.c user/kmacy/HEAD_ECMP/sys/gnu/fs/ext2fs/ext2_inode.c user/kmacy/HEAD_ECMP/sys/gnu/fs/ext2fs/ext2_lookup.c user/kmacy/HEAD_ECMP/sys/gnu/fs/ext2fs/ext2_vfsops.c user/kmacy/HEAD_ECMP/sys/gnu/fs/reiserfs/reiserfs_inode.c user/kmacy/HEAD_ECMP/sys/gnu/fs/reiserfs/reiserfs_vfsops.c user/kmacy/HEAD_ECMP/sys/i386/conf/NOTES user/kmacy/HEAD_ECMP/sys/i386/cpufreq/powernow.c user/kmacy/HEAD_ECMP/sys/i386/i386/apic_vector.s user/kmacy/HEAD_ECMP/sys/i386/i386/identcpu.c user/kmacy/HEAD_ECMP/sys/i386/i386/initcpu.c user/kmacy/HEAD_ECMP/sys/i386/i386/local_apic.c user/kmacy/HEAD_ECMP/sys/i386/i386/sys_machdep.c user/kmacy/HEAD_ECMP/sys/i386/i386/trap.c user/kmacy/HEAD_ECMP/sys/i386/i386/tsc.c user/kmacy/HEAD_ECMP/sys/i386/include/apicvar.h user/kmacy/HEAD_ECMP/sys/i386/include/clock.h user/kmacy/HEAD_ECMP/sys/i386/include/md_var.h user/kmacy/HEAD_ECMP/sys/i386/include/pcpu.h user/kmacy/HEAD_ECMP/sys/i386/include/smp.h user/kmacy/HEAD_ECMP/sys/i386/include/specialreg.h user/kmacy/HEAD_ECMP/sys/i386/include/xen/evtchn.h user/kmacy/HEAD_ECMP/sys/i386/include/xen/xen-os.h user/kmacy/HEAD_ECMP/sys/i386/include/xen/xen_intr.h user/kmacy/HEAD_ECMP/sys/i386/include/xen/xenfunc.h user/kmacy/HEAD_ECMP/sys/i386/isa/pmtimer.c user/kmacy/HEAD_ECMP/sys/i386/isa/prof_machdep.c user/kmacy/HEAD_ECMP/sys/i386/linux/linux.h user/kmacy/HEAD_ECMP/sys/i386/linux/linux_sysvec.c user/kmacy/HEAD_ECMP/sys/i386/xen/clock.c user/kmacy/HEAD_ECMP/sys/i386/xen/exception.s user/kmacy/HEAD_ECMP/sys/i386/xen/mp_machdep.c user/kmacy/HEAD_ECMP/sys/i386/xen/xen_machdep.c user/kmacy/HEAD_ECMP/sys/ia64/ia64/mp_machdep.c user/kmacy/HEAD_ECMP/sys/ia64/ia64/sscdisk.c user/kmacy/HEAD_ECMP/sys/kern/kern_descrip.c user/kmacy/HEAD_ECMP/sys/kern/kern_event.c user/kmacy/HEAD_ECMP/sys/kern/kern_jail.c user/kmacy/HEAD_ECMP/sys/kern/kern_linker.c user/kmacy/HEAD_ECMP/sys/kern/kern_lockf.c user/kmacy/HEAD_ECMP/sys/kern/kern_mtxpool.c user/kmacy/HEAD_ECMP/sys/kern/kern_proc.c user/kmacy/HEAD_ECMP/sys/kern/kern_prot.c user/kmacy/HEAD_ECMP/sys/kern/kern_resource.c user/kmacy/HEAD_ECMP/sys/kern/kern_sig.c user/kmacy/HEAD_ECMP/sys/kern/kern_thr.c user/kmacy/HEAD_ECMP/sys/kern/kern_thread.c user/kmacy/HEAD_ECMP/sys/kern/kern_time.c user/kmacy/HEAD_ECMP/sys/kern/kern_timeout.c user/kmacy/HEAD_ECMP/sys/kern/subr_blist.c user/kmacy/HEAD_ECMP/sys/kern/subr_param.c user/kmacy/HEAD_ECMP/sys/kern/subr_rman.c user/kmacy/HEAD_ECMP/sys/kern/subr_sleepqueue.c user/kmacy/HEAD_ECMP/sys/kern/subr_stack.c user/kmacy/HEAD_ECMP/sys/kern/subr_witness.c user/kmacy/HEAD_ECMP/sys/kern/sys_process.c user/kmacy/HEAD_ECMP/sys/kern/tty.c user/kmacy/HEAD_ECMP/sys/kern/uipc_accf.c user/kmacy/HEAD_ECMP/sys/kern/uipc_mqueue.c user/kmacy/HEAD_ECMP/sys/kern/uipc_syscalls.c user/kmacy/HEAD_ECMP/sys/kern/uipc_usrreq.c user/kmacy/HEAD_ECMP/sys/kern/vfs_export.c user/kmacy/HEAD_ECMP/sys/kern/vfs_subr.c user/kmacy/HEAD_ECMP/sys/kern/vfs_syscalls.c user/kmacy/HEAD_ECMP/sys/kern/vfs_vnops.c user/kmacy/HEAD_ECMP/sys/kern/vnode_if.src user/kmacy/HEAD_ECMP/sys/mips/conf/ADM5120 user/kmacy/HEAD_ECMP/sys/mips/conf/IDT user/kmacy/HEAD_ECMP/sys/mips/conf/MALTA user/kmacy/HEAD_ECMP/sys/mips/conf/QEMU user/kmacy/HEAD_ECMP/sys/mips/conf/SENTRY5 user/kmacy/HEAD_ECMP/sys/modules/Makefile user/kmacy/HEAD_ECMP/sys/modules/mac_bsdextended/Makefile user/kmacy/HEAD_ECMP/sys/modules/u3g/Makefile user/kmacy/HEAD_ECMP/sys/net/bpf.c user/kmacy/HEAD_ECMP/sys/net/bsd_comp.c user/kmacy/HEAD_ECMP/sys/net/if.c user/kmacy/HEAD_ECMP/sys/net/if_arcsubr.c user/kmacy/HEAD_ECMP/sys/net/if_ethersubr.c user/kmacy/HEAD_ECMP/sys/net/if_fddisubr.c user/kmacy/HEAD_ECMP/sys/net/if_iso88025subr.c user/kmacy/HEAD_ECMP/sys/net/if_ppp.c user/kmacy/HEAD_ECMP/sys/net/if_sl.c user/kmacy/HEAD_ECMP/sys/net/if_tap.c user/kmacy/HEAD_ECMP/sys/net/if_tun.c user/kmacy/HEAD_ECMP/sys/net/ppp_deflate.c user/kmacy/HEAD_ECMP/sys/net/rtsock.c user/kmacy/HEAD_ECMP/sys/net80211/_ieee80211.h user/kmacy/HEAD_ECMP/sys/net80211/ieee80211.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_adhoc.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_crypto.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_freebsd.h user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_hostap.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_ht.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_ht.h user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_input.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_ioctl.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_node.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_node.h user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_output.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_power.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_power.h user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_proto.h user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_regdomain.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_scan_sta.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_sta.c user/kmacy/HEAD_ECMP/sys/net80211/ieee80211_var.h user/kmacy/HEAD_ECMP/sys/netatalk/ddp_pcb.c user/kmacy/HEAD_ECMP/sys/netgraph/atm/sscfu/ng_sscfu_cust.h user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/drivers/h4/ng_h4.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/hci/ng_hci_main.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/hci/ng_hci_misc.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/l2cap/ng_l2cap_main.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.h user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c user/kmacy/HEAD_ECMP/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c user/kmacy/HEAD_ECMP/sys/netgraph/netflow/netflow.c user/kmacy/HEAD_ECMP/sys/netgraph/netflow/ng_netflow.c user/kmacy/HEAD_ECMP/sys/netgraph/netgraph.h user/kmacy/HEAD_ECMP/sys/netgraph/ng_UI.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_async.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_atmllc.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_base.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_bpf.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_bridge.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_cisco.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_device.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_eiface.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_etf.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_ether.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_fec.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_frame_relay.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_gif.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_gif_demux.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_hole.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_iface.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_ipfw.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_ksocket.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_l2tp.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_lmi.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_message.h user/kmacy/HEAD_ECMP/sys/netgraph/ng_mppc.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_nat.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_one2many.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_parse.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_pipe.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_ppp.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_pptpgre.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_rfc1490.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_sample.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_split.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_sppp.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_tag.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_tcpmss.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_tee.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_tty.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_vjc.c user/kmacy/HEAD_ECMP/sys/netgraph/ng_vlan.c user/kmacy/HEAD_ECMP/sys/netinet/igmp.c user/kmacy/HEAD_ECMP/sys/netinet/in.c user/kmacy/HEAD_ECMP/sys/netinet/in_mcast.c user/kmacy/HEAD_ECMP/sys/netinet/in_pcb.c user/kmacy/HEAD_ECMP/sys/netinet/in_pcb.h user/kmacy/HEAD_ECMP/sys/netinet/ip_carp.c user/kmacy/HEAD_ECMP/sys/netinet/sctp_os_bsd.h user/kmacy/HEAD_ECMP/sys/netinet/sctp_output.c user/kmacy/HEAD_ECMP/sys/netinet/sctp_timer.c user/kmacy/HEAD_ECMP/sys/netinet/sctp_timer.h user/kmacy/HEAD_ECMP/sys/netinet/tcp_input.c user/kmacy/HEAD_ECMP/sys/netinet/tcp_sack.c user/kmacy/HEAD_ECMP/sys/netinet/tcp_syncache.c user/kmacy/HEAD_ECMP/sys/netinet6/frag6.c user/kmacy/HEAD_ECMP/sys/netinet6/in6.c user/kmacy/HEAD_ECMP/sys/netinet6/in6_pcb.c user/kmacy/HEAD_ECMP/sys/netinet6/in6_src.c user/kmacy/HEAD_ECMP/sys/netinet6/ip6_var.h user/kmacy/HEAD_ECMP/sys/netinet6/raw_ip6.c user/kmacy/HEAD_ECMP/sys/netipsec/keysock.c user/kmacy/HEAD_ECMP/sys/netipsec/xform_ah.c user/kmacy/HEAD_ECMP/sys/netipx/ipx_pcb.c user/kmacy/HEAD_ECMP/sys/netipx/spx_usrreq.c user/kmacy/HEAD_ECMP/sys/netnatm/natm.c user/kmacy/HEAD_ECMP/sys/netnatm/natm_pcb.c user/kmacy/HEAD_ECMP/sys/netncp/ncp_conn.c user/kmacy/HEAD_ECMP/sys/netncp/ncp_rq.c user/kmacy/HEAD_ECMP/sys/netncp/ncp_sock.c user/kmacy/HEAD_ECMP/sys/netncp/ncp_subr.c user/kmacy/HEAD_ECMP/sys/netsmb/smb_rq.c user/kmacy/HEAD_ECMP/sys/netsmb/smb_trantcp.c user/kmacy/HEAD_ECMP/sys/nfs4client/nfs4_dev.c user/kmacy/HEAD_ECMP/sys/nfs4client/nfs4_idmap.c user/kmacy/HEAD_ECMP/sys/nfs4client/nfs4_socket.c user/kmacy/HEAD_ECMP/sys/nfs4client/nfs4_vfsops.c user/kmacy/HEAD_ECMP/sys/nfs4client/nfs4_vn_subs.c user/kmacy/HEAD_ECMP/sys/nfs4client/nfs4_vnops.c user/kmacy/HEAD_ECMP/sys/nfsclient/krpc_subr.c user/kmacy/HEAD_ECMP/sys/nfsclient/nfs_lock.c user/kmacy/HEAD_ECMP/sys/nfsclient/nfs_node.c user/kmacy/HEAD_ECMP/sys/nfsclient/nfs_socket.c user/kmacy/HEAD_ECMP/sys/nfsclient/nfs_subs.c user/kmacy/HEAD_ECMP/sys/nfsclient/nfs_vfsops.c user/kmacy/HEAD_ECMP/sys/nfsclient/nfs_vnops.c user/kmacy/HEAD_ECMP/sys/nfsserver/nfs_serv.c user/kmacy/HEAD_ECMP/sys/nfsserver/nfs_srvcache.c user/kmacy/HEAD_ECMP/sys/nfsserver/nfs_srvsock.c user/kmacy/HEAD_ECMP/sys/nfsserver/nfs_syscalls.c user/kmacy/HEAD_ECMP/sys/opencrypto/cryptodev.c user/kmacy/HEAD_ECMP/sys/opencrypto/cryptosoft.c user/kmacy/HEAD_ECMP/sys/opencrypto/deflate.c user/kmacy/HEAD_ECMP/sys/opencrypto/xform.c user/kmacy/HEAD_ECMP/sys/pc98/pc98/pc98_machdep.c user/kmacy/HEAD_ECMP/sys/pc98/pc98/pc98_machdep.h user/kmacy/HEAD_ECMP/sys/pci/if_rl.c user/kmacy/HEAD_ECMP/sys/pci/if_rlreg.h user/kmacy/HEAD_ECMP/sys/rpc/rpcclnt.c user/kmacy/HEAD_ECMP/sys/security/mac/mac_framework.h user/kmacy/HEAD_ECMP/sys/security/mac/mac_inet6.c user/kmacy/HEAD_ECMP/sys/security/mac/mac_policy.h user/kmacy/HEAD_ECMP/sys/security/mac_biba/mac_biba.c user/kmacy/HEAD_ECMP/sys/security/mac_bsdextended/mac_bsdextended.c user/kmacy/HEAD_ECMP/sys/security/mac_lomac/mac_lomac.c user/kmacy/HEAD_ECMP/sys/security/mac_mls/mac_mls.c user/kmacy/HEAD_ECMP/sys/security/mac_stub/mac_stub.c user/kmacy/HEAD_ECMP/sys/security/mac_test/mac_test.c user/kmacy/HEAD_ECMP/sys/sparc64/sparc64/db_trace.c user/kmacy/HEAD_ECMP/sys/sparc64/sparc64/stack_machdep.c user/kmacy/HEAD_ECMP/sys/sun4v/sun4v/db_trace.c user/kmacy/HEAD_ECMP/sys/sun4v/sun4v/stack_machdep.c user/kmacy/HEAD_ECMP/sys/sys/cdefs.h user/kmacy/HEAD_ECMP/sys/sys/cons.h user/kmacy/HEAD_ECMP/sys/sys/param.h user/kmacy/HEAD_ECMP/sys/sys/proc.h user/kmacy/HEAD_ECMP/sys/sys/syscallsubr.h user/kmacy/HEAD_ECMP/sys/ufs/ffs/ffs_inode.c user/kmacy/HEAD_ECMP/sys/ufs/ffs/ffs_snapshot.c user/kmacy/HEAD_ECMP/sys/ufs/ffs/ffs_softdep.c user/kmacy/HEAD_ECMP/sys/ufs/ffs/ffs_vfsops.c user/kmacy/HEAD_ECMP/sys/ufs/ffs/ffs_vnops.c user/kmacy/HEAD_ECMP/sys/ufs/ufs/ufs_dirhash.c user/kmacy/HEAD_ECMP/sys/ufs/ufs/ufs_extattr.c user/kmacy/HEAD_ECMP/sys/ufs/ufs/ufs_vnops.c user/kmacy/HEAD_ECMP/sys/vm/vm_mmap.c user/kmacy/HEAD_ECMP/sys/xen/evtchn/evtchn.c Modified: user/kmacy/HEAD_ECMP/sys/amd64/amd64/identcpu.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/amd64/identcpu.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/amd64/identcpu.c Tue Oct 28 06:15:43 2008 (r184392) @@ -348,6 +348,19 @@ printcpuinfo(void) cpu_feature &= ~CPUID_HTT; /* + * If this CPU supports P-state invariant TSC then + * mention the capability. + */ + if (!tsc_is_invariant && + (strcmp(cpu_vendor, "AuthenticAMD") == 0 && + ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || + AMD64_CPU_FAMILY(cpu_id) >= 0x10 || + cpu_id == 0x60fb2))) { + tsc_is_invariant = 1; + printf("\n TSC: P-state invariant"); + } + + /* * If this CPU supports HTT or CMP then mention the * number of physical/logical cores it contains. */ @@ -409,8 +422,11 @@ panicifcpuunsupported(void) static void tsc_freq_changed(void *arg, const struct cf_level *level, int status) { - /* If there was an error during the transition, don't do anything. */ - if (status != 0) + /* + * If there was an error during the transition or + * TSC is P-state invariant, don't do anything. + */ + if (status != 0 || tsc_is_invariant) return; /* Total setting for this level gives the new frequency in MHz. */ @@ -451,6 +467,10 @@ identify_cpu(void) amd_feature = regs[3] & ~(cpu_feature & 0x0183f3ff); amd_feature2 = regs[2]; } + if (cpu_exthigh >= 0x80000007) { + do_cpuid(0x80000007, regs); + amd_pminfo = regs[3]; + } if (cpu_exthigh >= 0x80000008) { do_cpuid(0x80000008, regs); cpu_procinfo2 = regs[2]; Modified: user/kmacy/HEAD_ECMP/sys/amd64/amd64/initcpu.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/amd64/initcpu.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/amd64/initcpu.c Tue Oct 28 06:15:43 2008 (r184392) @@ -53,6 +53,7 @@ u_int cpu_feature; /* Feature flags */ u_int cpu_feature2; /* Feature flags */ u_int amd_feature; /* AMD feature flags */ u_int amd_feature2; /* AMD feature flags */ +u_int amd_pminfo; /* AMD advanced power management info */ u_int cpu_high; /* Highest arg to CPUID */ u_int cpu_exthigh; /* Highest arg to extended CPUID */ u_int cpu_id; /* Stepping ID */ Modified: user/kmacy/HEAD_ECMP/sys/amd64/amd64/local_apic.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/amd64/local_apic.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/amd64/local_apic.c Tue Oct 28 06:15:43 2008 (r184392) @@ -401,7 +401,10 @@ lapic_setup_clock(void) lapic_timer_hz = hz * 2; else lapic_timer_hz = hz * 4; - stathz = lapic_timer_hz / (lapic_timer_hz / 128); + if (lapic_timer_hz < 128) + stathz = lapic_timer_hz; + else + stathz = lapic_timer_hz / (lapic_timer_hz / 128); profhz = lapic_timer_hz; lapic_timer_period = value / lapic_timer_hz; Modified: user/kmacy/HEAD_ECMP/sys/amd64/amd64/prof_machdep.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/amd64/prof_machdep.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/amd64/prof_machdep.c Tue Oct 28 06:15:43 2008 (r184392) @@ -383,8 +383,11 @@ static void tsc_freq_changed(void *arg, const struct cf_level *level, int status) { - /* If there was an error during the transition, don't do anything. */ - if (status != 0) + /* + * If there was an error during the transition or + * TSC is P-state invariant, don't do anything. + */ + if (status != 0 || tsc_is_invariant) return; if (cputime_prof_active && cputime_clock == CPUTIME_CLOCK_TSC) printf("warning: cpu freq changed while profiling active\n"); Modified: user/kmacy/HEAD_ECMP/sys/amd64/amd64/tsc.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/amd64/tsc.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/amd64/tsc.c Tue Oct 28 06:15:43 2008 (r184392) @@ -48,8 +48,13 @@ __FBSDID("$FreeBSD$"); uint64_t tsc_freq; int tsc_is_broken; +int tsc_is_invariant; static eventhandler_tag tsc_levels_tag, tsc_pre_tag, tsc_post_tag; +SYSCTL_INT(_kern_timecounter, OID_AUTO, invariant_tsc, CTLFLAG_RDTUN, + &tsc_is_invariant, 0, "Indicates whether the TSC is P-state invariant"); +TUNABLE_INT("kern.timecounter.invariant_tsc", &tsc_is_invariant); + #ifdef SMP static int smp_tsc; SYSCTL_INT(_kern_timecounter, OID_AUTO, smp_tsc, CTLFLAG_RDTUN, &smp_tsc, 0, @@ -174,11 +179,12 @@ static void tsc_freq_changing(void *arg, const struct cf_level *level, int *status) { - if (*status != 0 || timecounter != &tsc_timecounter) + if (*status != 0 || timecounter != &tsc_timecounter || + tsc_is_invariant) return; printf("timecounter TSC must not be in use when " - "changing frequencies; change denied\n"); + "changing frequencies; change denied\n"); *status = EBUSY; } @@ -186,8 +192,11 @@ tsc_freq_changing(void *arg, const struc static void tsc_freq_changed(void *arg, const struct cf_level *level, int status) { - /* If there was an error during the transition, don't do anything. */ - if (status != 0) + /* + * If there was an error during the transition or + * TSC is P-state invariant, don't do anything. + */ + if (status != 0 || tsc_is_invariant) return; /* Total setting for this level gives the new frequency in MHz. */ Modified: user/kmacy/HEAD_ECMP/sys/amd64/include/clock.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/include/clock.h Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/include/clock.h Tue Oct 28 06:15:43 2008 (r184392) @@ -20,6 +20,7 @@ extern u_int i8254_freq; extern int i8254_max_count; extern uint64_t tsc_freq; extern int tsc_is_broken; +extern int tsc_is_invariant; void i8254_init(void); Modified: user/kmacy/HEAD_ECMP/sys/amd64/include/md_var.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/include/md_var.h Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/include/md_var.h Tue Oct 28 06:15:43 2008 (r184392) @@ -44,6 +44,7 @@ extern u_int cpu_feature; extern u_int cpu_feature2; extern u_int amd_feature; extern u_int amd_feature2; +extern u_int amd_pminfo; extern u_int cpu_fxsr; extern u_int cpu_high; extern u_int cpu_id; Modified: user/kmacy/HEAD_ECMP/sys/amd64/include/specialreg.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/include/specialreg.h Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/include/specialreg.h Tue Oct 28 06:15:43 2008 (r184392) @@ -153,6 +153,21 @@ #define AMDID2_PREFETCH 0x00000100 /* + * CPUID instruction 1 eax info + */ +#define CPUID_STEPPING 0x0000000f +#define CPUID_MODEL 0x000000f0 +#define CPUID_FAMILY 0x00000f00 +#define CPUID_EXT_MODEL 0x000f0000 +#define CPUID_EXT_FAMILY 0x0ff00000 +#define AMD64_CPU_MODEL(id) \ + ((((id) & CPUID_MODEL) >> 4) | \ + (((id) & CPUID_EXT_MODEL) >> 12)) +#define AMD64_CPU_FAMILY(id) \ + ((((id) & CPUID_FAMILY) >> 8) + \ + (((id) & CPUID_EXT_FAMILY) >> 20)) + +/* * CPUID instruction 1 ebx info */ #define CPUID_BRAND_INDEX 0x000000ff @@ -161,6 +176,19 @@ #define CPUID_LOCAL_APIC_ID 0xff000000 /* + * AMD extended function 8000_0007h edx info + */ +#define AMDPM_TS 0x00000001 +#define AMDPM_FID 0x00000002 +#define AMDPM_VID 0x00000004 +#define AMDPM_TTP 0x00000008 +#define AMDPM_TM 0x00000010 +#define AMDPM_STC 0x00000020 +#define AMDPM_100MHZ_STEPS 0x00000040 +#define AMDPM_HW_PSTATE 0x00000080 +#define AMDPM_TSC_INVARIANT 0x00000100 + +/* * AMD extended function 8000_0008h ecx info */ #define AMDID_CMP_CORES 0x000000ff Modified: user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux.h Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux.h Tue Oct 28 06:15:43 2008 (r184392) @@ -86,6 +86,8 @@ typedef l_long l_suseconds_t; typedef l_long l_time_t; typedef l_uint l_uid_t; typedef l_ushort l_uid16_t; +typedef l_int l_timer_t; +typedef l_int l_mqd_t; typedef struct { l_int val[2]; @@ -399,10 +401,10 @@ struct l_ucontext { #define LINUX_SI_MAX_SIZE 128 #define LINUX_SI_PAD_SIZE ((LINUX_SI_MAX_SIZE/sizeof(l_int)) - 3) -union l_sigval { +typedef union l_sigval { l_int sival_int; l_uintptr_t sival_ptr; -}; +} l_sigval_t; typedef struct l_siginfo { l_int lsi_signo; @@ -413,23 +415,26 @@ typedef struct l_siginfo { struct { l_pid_t _pid; - l_uid16_t _uid; + l_uid_t _uid; } __packed _kill; struct { - l_uint _timer1; - l_uint _timer2; + l_timer_t _tid; + l_int _overrun; + char _pad[sizeof(l_uid_t) - sizeof(l_int)]; + l_sigval_t _sigval; + l_int _sys_private; } __packed _timer; struct { l_pid_t _pid; /* sender's pid */ - l_uid16_t _uid; /* sender's uid */ - union l_sigval _sigval; + l_uid_t _uid; /* sender's uid */ + l_sigval_t _sigval; } __packed _rt; struct { l_pid_t _pid; /* which child */ - l_uid16_t _uid; /* sender's uid */ + l_uid_t _uid; /* sender's uid */ l_int _status; /* exit code */ l_clock_t _utime; l_clock_t _stime; @@ -440,7 +445,7 @@ typedef struct l_siginfo { } __packed _sigfault; struct { - l_int _band; /* POLL_IN,POLL_OUT,POLL_MSG */ + l_long _band; /* POLL_IN,POLL_OUT,POLL_MSG */ l_int _fd; } __packed _sigpoll; } _sifields; @@ -448,6 +453,9 @@ typedef struct l_siginfo { #define lsi_pid _sifields._kill._pid #define lsi_uid _sifields._kill._uid +#define lsi_tid _sifields._timer._tid +#define lsi_overrun _sifields._timer._overrun +#define lsi_sys_private _sifields._timer._sys_private #define lsi_status _sifields._sigchld._status #define lsi_utime _sifields._sigchld._utime #define lsi_stime _sifields._sigchld._stime @@ -860,9 +868,6 @@ struct l_user_desc { #define LINUX_CLOCK_REALTIME_HR 4 #define LINUX_CLOCK_MONOTONIC_HR 5 -typedef int l_timer_t; -typedef int l_mqd_t; - #define LINUX_CLONE_VM 0x00000100 #define LINUX_CLONE_FS 0x00000200 #define LINUX_CLONE_FILES 0x00000400 Modified: user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux32_sysvec.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/amd64/linux32/linux32_sysvec.c Tue Oct 28 06:15:43 2008 (r184392) @@ -334,9 +334,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo frame.sf_ucontext = PTROUT(&fp->sf_sc); /* Fill in POSIX parts */ - frame.sf_si.lsi_signo = sig; - frame.sf_si.lsi_code = code; - frame.sf_si.lsi_addr = PTROUT(ksi->ksi_addr); + ksiginfo_to_lsiginfo(ksi, &frame.sf_si, sig); /* * Build the signal context to be used by sigreturn. Modified: user/kmacy/HEAD_ECMP/sys/arm/arm/undefined.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/arm/undefined.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/arm/undefined.c Tue Oct 28 06:15:43 2008 (r184392) @@ -106,7 +106,7 @@ install_coproc_handler(int coproc, undef KASSERT(handler != NULL, ("handler is NULL")); /* Used to be legal. */ /* XXX: M_TEMP??? */ - MALLOC(uh, struct undefined_handler *, sizeof(*uh), M_TEMP, M_WAITOK); + uh = malloc(sizeof(*uh), M_TEMP, M_WAITOK); uh->uh_handler = handler; install_coproc_handler_static(coproc, uh); return uh; @@ -125,7 +125,7 @@ remove_coproc_handler(void *cookie) struct undefined_handler *uh = cookie; LIST_REMOVE(uh, uh_link); - FREE(uh, M_TEMP); + free(uh, M_TEMP); } Modified: user/kmacy/HEAD_ECMP/sys/arm/at91/at91.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/at91/at91.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/at91/at91.c Tue Oct 28 06:15:43 2008 (r184392) @@ -168,6 +168,42 @@ struct bus_space at91_bs_tag = { generic_armv4_bs_c_2, NULL, NULL, + + /* read (single) stream */ + generic_bs_r_1, + generic_armv4_bs_r_2, + generic_bs_r_4, + NULL, + + /* read multiple stream */ + generic_bs_rm_1, + generic_armv4_bs_rm_2, + generic_bs_rm_4, + NULL, + + /* read region stream */ + generic_bs_rr_1, + generic_armv4_bs_rr_2, + generic_bs_rr_4, + NULL, + + /* write (single) stream */ + generic_bs_w_1, + generic_armv4_bs_w_2, + generic_bs_w_4, + NULL, + + /* write multiple stream */ + generic_bs_wm_1, + generic_armv4_bs_wm_2, + generic_bs_wm_4, + NULL, + + /* write region stream */ + NULL, + generic_armv4_bs_wr_2, + generic_bs_wr_4, + NULL, }; static int @@ -534,8 +570,10 @@ at91_alloc_resource(device_t dev, device case SYS_RES_MEMORY: rle->res = rman_reserve_resource(&sc->sc_mem_rman, start, end, count, flags, child); - rman_set_bustag(rle->res, &at91_bs_tag); - rman_set_bushandle(rle->res, start); + if (rle->res != NULL) { + rman_set_bustag(rle->res, &at91_bs_tag); + rman_set_bushandle(rle->res, start); + } break; } if (rle->res) { Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/AVILA ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/AVILA Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/AVILA Tue Oct 28 06:15:43 2008 (r184392) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident AVILA options PHYSADDR=0x10000000 @@ -80,7 +79,6 @@ options BOOTP_COMPAT #options PREEMPTION #options VERBOSE_SYSINIT -device mem # Memory and kernel memory devices #device saarm device pci Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/BWCT ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/BWCT Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/BWCT Tue Oct 28 06:15:43 2008 (r184392) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident BWCT options VERBOSE_INIT_ARM @@ -85,7 +84,6 @@ device rlswitch #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed #options DIAGNOSTIC -device mem # Memory and kernel memory devices device md device at91_twi # TWI: Two Wire Interface device at91_spi # SPI: Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/CRB ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/CRB Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/CRB Tue Oct 28 06:15:43 2008 (r184392) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident CRB options PHYSADDR=0x00000000 @@ -67,7 +66,6 @@ options BOOTP_COMPAT #options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices #device saarm device miibus device rl Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/DB-78XXX ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/DB-78XXX Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/DB-78XXX Tue Oct 28 06:15:43 2008 (r184392) @@ -4,7 +4,6 @@ # $FreeBSD$ # -machine arm ident DB-88F78XX include "../mv/discovery/std.db78xxx" @@ -49,7 +48,6 @@ options WITNESS_SKIPSPIN #Don't run wit # Pseudo devices device loop -device mem device md device pty device random Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F5XXX ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F5XXX Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F5XXX Tue Oct 28 06:15:43 2008 (r184392) @@ -4,7 +4,6 @@ # $FreeBSD$ # -machine arm ident DB-88F5XXX include "../mv/orion/std.db88f5xxx" @@ -48,7 +47,6 @@ options WITNESS_SKIPSPIN #Don't run wit #options WITNESS_KDB # Pseudo devices -device mem device md device loop device pty Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F6XXX ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F6XXX Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/DB-88F6XXX Tue Oct 28 06:15:43 2008 (r184392) @@ -4,7 +4,6 @@ # $FreeBSD$ # -machine arm ident DB-88F6XXX include "../mv/kirkwood/std.db88f6xxx" @@ -49,7 +48,6 @@ options WITNESS_SKIPSPIN #Don't run wit # Pseudo devices device loop -device mem device md device pty device random Added: user/kmacy/HEAD_ECMP/sys/arm/conf/DEFAULTS ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/DEFAULTS Tue Oct 28 06:15:43 2008 (r184392) @@ -0,0 +1,11 @@ +# +# DEFAULTS -- Default kernel configuration file for FreeBSD/arm +# +# $FreeBSD$ + +machine arm + +device mem + +options GEOM_BSD +options GEOM_MBR Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/EP80219 ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/EP80219 Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/EP80219 Tue Oct 28 06:15:43 2008 (r184392) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident EP80219 options PHYSADDR=0xa0000000 @@ -69,7 +68,6 @@ options BOOTP_COMPAT #options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices #device saarm device miibus device fxp Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/GUMSTIX ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/GUMSTIX Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/GUMSTIX Tue Oct 28 06:15:43 2008 (r184392) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident GUMSTIX cpu CPU_XSCALE_PXA2X0 @@ -71,7 +70,6 @@ options BOOTP_BLOCKSIZE=4096 options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices device mii device smc device smcphy Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/HL200 ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/HL200 Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/HL200 Tue Oct 28 06:15:43 2008 (r184392) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident HL200 include "../at91/std.at91" @@ -89,7 +88,6 @@ device lxtphy #options WITNESS #Enable checks to detect deadlocks and cycles #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed -device mem # Memory and kernel memory devices device md device at91_twi # TWI: Two Wire Interface device at91_spi # SPI: Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/IQ31244 ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/IQ31244 Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/IQ31244 Tue Oct 28 06:15:43 2008 (r184392) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident IQ31244 options PHYSADDR=0xa0000000 @@ -66,7 +65,6 @@ options BOOTP_COMPAT #options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices #device saarm device miibus device rl Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/KB920X ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/KB920X Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/KB920X Tue Oct 28 06:15:43 2008 (r184392) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident KB920X include "../at91/std.kb920x" @@ -80,7 +79,6 @@ device lxtphy #options WITNESS #Enable checks to detect deadlocks and cycles #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed -device mem # Memory and kernel memory devices device md device at91_twi # TWI: Two Wire Interface device at91_spi # SPI: Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/NSLU ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/NSLU Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/NSLU Tue Oct 28 06:15:43 2008 (r184392) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident NSLU options PHYSADDR=0x10000000 @@ -76,7 +75,6 @@ options BOOTP_NFSV3 options BOOTP_WIRED_TO=npe0 options BOOTP_COMPAT -device mem # Memory and kernel memory devices device pci device uart Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/SIMICS ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/SIMICS Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/SIMICS Tue Oct 28 06:15:43 2008 (r184392) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident SIMICS options KERNPHYSADDR=0xc0000000 @@ -68,5 +67,4 @@ device uart #options WITNESS #Enable checks to detect deadlocks and cycles #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed -device mem # Memory and kernel memory devices device md Modified: user/kmacy/HEAD_ECMP/sys/arm/conf/SKYEYE ============================================================================== --- user/kmacy/HEAD_ECMP/sys/arm/conf/SKYEYE Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/arm/conf/SKYEYE Tue Oct 28 06:15:43 2008 (r184392) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident KB920X options KERNPHYSADDR=0xc0000000 @@ -79,7 +78,6 @@ device uart #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O -device mem # Memory and kernel memory devices device md options SKYEYE_WORKAROUNDS # Floppy drives Modified: user/kmacy/HEAD_ECMP/sys/cam/scsi/scsi_target.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/cam/scsi/scsi_target.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/cam/scsi/scsi_target.c Tue Oct 28 06:15:43 2008 (r184392) @@ -183,7 +183,7 @@ targopen(struct cdev *dev, int flags, in make_dev(&targ_cdevsw, dev2unit(dev), UID_ROOT, GID_WHEEL, 0600, "targ%d", dev2unit(dev)); } - MALLOC(softc, struct targ_softc *, sizeof(*softc), M_TARG, + softc = malloc(sizeof(*softc), M_TARG, M_WAITOK | M_ZERO); dev->si_drv1 = softc; softc->state = TARG_STATE_OPENED; @@ -211,7 +211,7 @@ targclose(struct cdev *dev, int flag, in if ((softc->periph == NULL) || (softc->state & TARG_STATE_LUN_ENABLED) == 0) { destroy_dev(dev); - FREE(softc, M_TARG); + free(softc, M_TARG); return (0); } @@ -230,7 +230,7 @@ targclose(struct cdev *dev, int flag, in softc->periph = NULL; } destroy_dev(dev); - FREE(softc, M_TARG); + free(softc, M_TARG); } cam_periph_unlock(periph); cam_periph_release(periph); @@ -531,7 +531,7 @@ targdtor(struct cam_periph *periph) } while ((descr = TAILQ_FIRST(&softc->abort_queue)) != NULL) { TAILQ_REMOVE(&softc->abort_queue, descr, tqe); - FREE(descr, M_TARG); + free(descr, M_TARG); } softc->periph = NULL; @@ -966,7 +966,7 @@ targgetccb(struct targ_softc *softc, xpt int ccb_len; ccb_len = targccblen(type); - MALLOC(ccb, union ccb *, ccb_len, M_TARG, M_WAITOK); + ccb = malloc(ccb_len, M_TARG, M_WAITOK); CAM_DEBUG(softc->path, CAM_DEBUG_PERIPH, ("getccb %p\n", ccb)); xpt_setup_ccb(&ccb->ccb_h, softc->path, priority); @@ -981,13 +981,13 @@ targfreeccb(struct targ_softc *softc, un { CAM_DEBUG_PRINT(CAM_DEBUG_PERIPH, ("targfreeccb descr %p and\n", ccb->ccb_h.targ_descr)); - FREE(ccb->ccb_h.targ_descr, M_TARG); + free(ccb->ccb_h.targ_descr, M_TARG); switch (ccb->ccb_h.func_code) { case XPT_ACCEPT_TARGET_IO: case XPT_IMMED_NOTIFY: CAM_DEBUG_PRINT(CAM_DEBUG_PERIPH, ("freeing ccb %p\n", ccb)); - FREE(ccb, M_TARG); + free(ccb, M_TARG); break; default: /* Send back CCB if we got it from the periph */ @@ -998,7 +998,7 @@ targfreeccb(struct targ_softc *softc, un } else { CAM_DEBUG_PRINT(CAM_DEBUG_PERIPH, ("freeing ccb %p\n", ccb)); - FREE(ccb, M_TARG); + free(ccb, M_TARG); } break; } @@ -1009,7 +1009,7 @@ targgetdescr(struct targ_softc *softc) { struct targ_cmd_descr *descr; - MALLOC(descr, struct targ_cmd_descr *, sizeof(*descr), M_TARG, + descr = malloc(sizeof(*descr), M_TARG, M_WAITOK); descr->mapinfo.num_bufs_used = 0; return (descr); Modified: user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_misc.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_misc.c Tue Oct 28 06:15:43 2008 (r184392) @@ -1762,6 +1762,24 @@ freebsd32_ftruncate(struct thread *td, s return (ftruncate(td, &ap)); } +int +freebsd32_getdirentries(struct thread *td, + struct freebsd32_getdirentries_args *uap) +{ + long base; + int32_t base32; + int error; + + error = kern_getdirentries(td, uap->fd, uap->buf, uap->count, &base); + if (error) + return (error); + if (uap->basep != NULL) { + base32 = base; + error = copyout(&base32, uap->basep, sizeof(int32_t)); + } + return (error); +} + #ifdef COMPAT_FREEBSD6 /* versions with the 'int pad' argument */ int Modified: user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_proto.h Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_proto.h Tue Oct 28 06:15:43 2008 (r184392) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ #ifndef _FREEBSD32_SYSPROTO_H_ @@ -152,6 +152,12 @@ struct freebsd32_lstat_args { char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; char ub_l_[PADL_(struct stat32 *)]; struct stat32 * ub; char ub_r_[PADR_(struct stat32 *)]; }; +struct freebsd32_getdirentries_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char count_l_[PADL_(u_int)]; u_int count; char count_r_[PADR_(u_int)]; + char basep_l_[PADL_(int32_t *)]; int32_t * basep; char basep_r_[PADR_(int32_t *)]; +}; struct freebsd32_sysctl_args { char name_l_[PADL_(int *)]; int * name; char name_r_[PADR_(int *)]; char namelen_l_[PADL_(u_int)]; u_int namelen; char namelen_r_[PADR_(u_int)]; @@ -406,6 +412,7 @@ int freebsd32_shmsys(struct thread *, st int freebsd32_stat(struct thread *, struct freebsd32_stat_args *); int freebsd32_fstat(struct thread *, struct freebsd32_fstat_args *); int freebsd32_lstat(struct thread *, struct freebsd32_lstat_args *); +int freebsd32_getdirentries(struct thread *, struct freebsd32_getdirentries_args *); int freebsd32_sysctl(struct thread *, struct freebsd32_sysctl_args *); int freebsd32_futimes(struct thread *, struct freebsd32_futimes_args *); int freebsd32_semctl(struct thread *, struct freebsd32_semctl_args *); @@ -618,6 +625,7 @@ int freebsd6_freebsd32_ftruncate(struct #define FREEBSD32_SYS_AUE_freebsd32_stat AUE_STAT #define FREEBSD32_SYS_AUE_freebsd32_fstat AUE_FSTAT #define FREEBSD32_SYS_AUE_freebsd32_lstat AUE_LSTAT +#define FREEBSD32_SYS_AUE_freebsd32_getdirentries AUE_GETDIRENTRIES #define FREEBSD32_SYS_AUE_freebsd32_sysctl AUE_SYSCTL #define FREEBSD32_SYS_AUE_freebsd32_futimes AUE_FUTIMES #define FREEBSD32_SYS_AUE_freebsd32_semctl AUE_SEMCTL Modified: user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscall.h Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscall.h Tue Oct 28 06:15:43 2008 (r184392) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ #define FREEBSD32_SYS_syscall 0 @@ -177,7 +177,7 @@ #define FREEBSD32_SYS_fpathconf 192 #define FREEBSD32_SYS_getrlimit 194 #define FREEBSD32_SYS_setrlimit 195 -#define FREEBSD32_SYS_getdirentries 196 +#define FREEBSD32_SYS_freebsd32_getdirentries 196 #define FREEBSD32_SYS_freebsd6_freebsd32_mmap 197 #define FREEBSD32_SYS___syscall 198 #define FREEBSD32_SYS_freebsd6_freebsd32_lseek 199 Modified: user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscalls.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_syscalls.c Tue Oct 28 06:15:43 2008 (r184392) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ const char *freebsd32_syscallnames[] = { @@ -203,7 +203,7 @@ const char *freebsd32_syscallnames[] = { "#193", /* 193 = nosys */ "getrlimit", /* 194 = getrlimit */ "setrlimit", /* 195 = setrlimit */ - "getdirentries", /* 196 = getdirentries */ + "freebsd32_getdirentries", /* 196 = freebsd32_getdirentries */ "compat6.freebsd32_mmap", /* 197 = old freebsd32_mmap */ "__syscall", /* 198 = __syscall */ "compat6.freebsd32_lseek", /* 199 = old freebsd32_lseek */ Modified: user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_sysent.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/freebsd32/freebsd32_sysent.c Tue Oct 28 06:15:43 2008 (r184392) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ #include "opt_compat.h" @@ -234,7 +234,7 @@ struct sysent freebsd32_sysent[] = { { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 193 = nosys */ { AS(__getrlimit_args), (sy_call_t *)getrlimit, AUE_GETRLIMIT, NULL, 0, 0 }, /* 194 = getrlimit */ { AS(__setrlimit_args), (sy_call_t *)setrlimit, AUE_SETRLIMIT, NULL, 0, 0 }, /* 195 = setrlimit */ - { AS(getdirentries_args), (sy_call_t *)getdirentries, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 196 = getdirentries */ + { AS(freebsd32_getdirentries_args), (sy_call_t *)freebsd32_getdirentries, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 196 = freebsd32_getdirentries */ { compat6(AS(freebsd6_freebsd32_mmap_args),freebsd32_mmap), AUE_MMAP, NULL, 0, 0 }, /* 197 = old freebsd32_mmap */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 198 = __syscall */ { compat6(AS(freebsd6_freebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0 }, /* 199 = old freebsd32_lseek */ Modified: user/kmacy/HEAD_ECMP/sys/compat/freebsd32/syscalls.master ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/freebsd32/syscalls.master Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/freebsd32/syscalls.master Tue Oct 28 06:15:43 2008 (r184392) @@ -350,8 +350,8 @@ 195 AUE_SETRLIMIT NOPROTO { int setrlimit(u_int which, \ struct rlimit *rlp); } setrlimit \ __setrlimit_args int -196 AUE_GETDIRENTRIES NOPROTO { int getdirentries(int fd, char *buf, \ - u_int count, long *basep); } +196 AUE_GETDIRENTRIES STD { int freebsd32_getdirentries(int fd, \ + char *buf, u_int count, int32_t *basep); } 197 AUE_MMAP COMPAT6 { caddr_t freebsd32_mmap(caddr_t addr, \ size_t len, int prot, int flags, int fd, \ int pad, u_int32_t poslo, \ Modified: user/kmacy/HEAD_ECMP/sys/compat/linux/linux_ioctl.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/linux/linux_ioctl.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/linux/linux_ioctl.c Tue Oct 28 06:15:43 2008 (r184392) @@ -2673,7 +2673,7 @@ linux_ioctl_register_handler(struct linu break; } if (he == NULL) { - MALLOC(he, struct handler_element *, sizeof(*he), + he = malloc(sizeof(*he), M_LINUX, M_WAITOK); he->func = h->func; } else @@ -2711,7 +2711,7 @@ linux_ioctl_unregister_handler(struct li if (he->func == h->func) { TAILQ_REMOVE(&handlers, he, list); sx_xunlock(&linux_ioctl_sx); - FREE(he, M_LINUX); + free(he, M_LINUX); return (0); } } Modified: user/kmacy/HEAD_ECMP/sys/compat/linux/linux_signal.c ============================================================================== --- user/kmacy/HEAD_ECMP/sys/compat/linux/linux_signal.c Tue Oct 28 06:15:18 2008 (r184391) +++ user/kmacy/HEAD_ECMP/sys/compat/linux/linux_signal.c Tue Oct 28 06:15:43 2008 (r184392) @@ -39,6 +39,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include + #include "opt_compat.h" #ifdef COMPAT_LINUX32 @@ -535,45 +537,75 @@ linux_kill(struct thread *td, struct lin return (kill(td, &tmp)); } -int -linux_tgkill(struct thread *td, struct linux_tgkill_args *args) +static int +linux_do_tkill(struct thread *td, l_int tgid, l_int pid, l_int signum) { - struct linux_emuldata *em; - struct linux_kill_args ka; + struct proc *proc = td->td_proc; + struct linux_emuldata *em; struct proc *p; + ksiginfo_t ksi; + int error; -#ifdef DEBUG - if (ldebug(tgkill)) - printf(ARGS(tgkill, "%d, %d, %d"), args->tgid, args->pid, args->sig); -#endif - - ka.pid = args->pid; - ka.signum = args->sig; + AUDIT_ARG(signum, signum); + AUDIT_ARG(pid, pid); - if (args->tgid == -1) - return linux_kill(td, &ka); + /* + * Allow signal 0 as a means to check for privileges + */ + if (!LINUX_SIG_VALID(signum) && signum != 0) + return (EINVAL); - if ((p = pfind(args->pid)) == NULL) - return ESRCH; + if (signum > 0 && signum <= LINUX_SIGTBLSZ) + signum = linux_to_bsd_signal[_SIG_IDX(signum)]; - if (p->p_sysent != &elf_linux_sysvec) - return ESRCH; + if ((p = pfind(pid)) == NULL) { + if ((p = zpfind(pid)) == NULL) + return (ESRCH); + } - PROC_UNLOCK(p); + AUDIT_ARG(process, p); + error = p_cansignal(td, p, signum); + if (error) + goto out; + error = ESRCH; em = em_find(p, EMUL_DONTLOCK); if (em == NULL) { #ifdef DEBUG - printf("emuldata not found in tgkill.\n"); + printf("emuldata not found in do_tkill.\n"); #endif - return ESRCH; + goto out; } + if (tgid > 0 && em->shared->group_pid != tgid) + goto out; + + ksiginfo_init(&ksi); + ksi.ksi_signo = signum; + ksi.ksi_code = LINUX_SI_TKILL; + ksi.ksi_errno = 0; + ksi.ksi_pid = proc->p_pid; + ksi.ksi_uid = proc->p_ucred->cr_ruid; - if (em->shared->group_pid != args->tgid) - return ESRCH; + error = tdsignal(p, NULL, ksi.ksi_signo, &ksi); - return linux_kill(td, &ka); +out: + PROC_UNLOCK(p); + return (error); +} + +int +linux_tgkill(struct thread *td, struct linux_tgkill_args *args) +{ + +#ifdef DEBUG + if (ldebug(tgkill)) + printf(ARGS(tgkill, "%d, %d, %d"), args->tgid, args->pid, args->sig); +#endif + if (args->pid <= 0 || args->tgid <=0) + return (EINVAL); + + return (linux_do_tkill(td, args->tgid, args->pid, args->sig)); } int @@ -583,6 +615,39 @@ linux_tkill(struct thread *td, struct li if (ldebug(tkill)) printf(ARGS(tkill, "%i, %i"), args->tid, args->sig); #endif + if (args->tid <= 0) + return (EINVAL); + + return (linux_do_tkill(td, 0, args->tid, args->sig)); +} + +void +ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 06:16:48 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88CAB106566B; Tue, 28 Oct 2008 06:16:48 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 73FA08FC12; Tue, 28 Oct 2008 06:16:48 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S6Gmod084714; Tue, 28 Oct 2008 06:16:48 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S6Gll2084686; Tue, 28 Oct 2008 06:16:47 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280616.m9S6Gll2084686@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 06:16:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184393 - in user/kmacy/HEAD_ECMP: bin/cp contrib/tcsh crypto/openssh etc etc/periodic/security lib/libarchive lib/libarchive/test lib/libc/gen lib/libc/string lib/libc/sys lib/libcam l... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 06:16:48 -0000 Author: kmacy Date: Tue Oct 28 06:16:47 2008 New Revision: 184393 URL: http://svn.freebsd.org/changeset/base/184393 Log: IF_HEAD part4 184043:184389 Added: user/kmacy/HEAD_ECMP/share/man/man4/sdhci.4 Modified: user/kmacy/HEAD_ECMP/bin/cp/utils.c user/kmacy/HEAD_ECMP/contrib/tcsh/sh.c user/kmacy/HEAD_ECMP/contrib/tcsh/tc.const.c user/kmacy/HEAD_ECMP/crypto/openssh/loginrec.c user/kmacy/HEAD_ECMP/crypto/openssh/sshd.c user/kmacy/HEAD_ECMP/etc/Makefile user/kmacy/HEAD_ECMP/etc/devd.conf user/kmacy/HEAD_ECMP/etc/periodic/security/200.chkmounts user/kmacy/HEAD_ECMP/etc/rc.subr user/kmacy/HEAD_ECMP/etc/remote user/kmacy/HEAD_ECMP/lib/libarchive/archive_read_support_format_zip.c user/kmacy/HEAD_ECMP/lib/libarchive/archive_util.c user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.c user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.zip.uu user/kmacy/HEAD_ECMP/lib/libc/gen/__xuname.c user/kmacy/HEAD_ECMP/lib/libc/gen/posix_spawn.c user/kmacy/HEAD_ECMP/lib/libc/string/strlcpy.c user/kmacy/HEAD_ECMP/lib/libc/string/strxfrm.c user/kmacy/HEAD_ECMP/lib/libc/sys/mmap.2 user/kmacy/HEAD_ECMP/lib/libcam/camlib.c user/kmacy/HEAD_ECMP/lib/libfetch/http.c user/kmacy/HEAD_ECMP/lib/libutil/flopen.3 user/kmacy/HEAD_ECMP/lib/libutil/flopen.c user/kmacy/HEAD_ECMP/lib/libutil/login_cap.h user/kmacy/HEAD_ECMP/lib/libutil/login_class.3 user/kmacy/HEAD_ECMP/lib/libutil/login_class.c user/kmacy/HEAD_ECMP/lib/libutil/login_times.3 user/kmacy/HEAD_ECMP/lib/libutil/login_times.c user/kmacy/HEAD_ECMP/lib/libutil/pidfile.3 user/kmacy/HEAD_ECMP/lib/libutil/pidfile.c user/kmacy/HEAD_ECMP/lib/libutil/pty.c user/kmacy/HEAD_ECMP/release/Makefile user/kmacy/HEAD_ECMP/release/doc/en_US.ISO8859-1/hardware/article.sgml user/kmacy/HEAD_ECMP/sbin/geom/class/part/geom_part.c user/kmacy/HEAD_ECMP/sbin/ifconfig/ifconfig.8 user/kmacy/HEAD_ECMP/share/man/man4/mmc.4 user/kmacy/HEAD_ECMP/share/man/man4/mmcsd.4 user/kmacy/HEAD_ECMP/share/man/man4/snd_hda.4 user/kmacy/HEAD_ECMP/share/man/man4/u3g.4 user/kmacy/HEAD_ECMP/share/man/man4/umodem.4 user/kmacy/HEAD_ECMP/share/man/man9/Makefile user/kmacy/HEAD_ECMP/share/man/man9/malloc.9 user/kmacy/HEAD_ECMP/share/man/man9/vinvalbuf.9 user/kmacy/HEAD_ECMP/tools/regression/lib/libutil/test-flopen.c user/kmacy/HEAD_ECMP/tools/tools/ath/athdebug/athdebug.c user/kmacy/HEAD_ECMP/tools/tools/ath/athstats/Makefile user/kmacy/HEAD_ECMP/tools/tools/ath/athstats/athstats.c user/kmacy/HEAD_ECMP/tools/tools/ath/athstats/main.c user/kmacy/HEAD_ECMP/tools/tools/nanobsd/nanobsd.sh user/kmacy/HEAD_ECMP/usr.sbin/Makefile user/kmacy/HEAD_ECMP/usr.sbin/nscd/agents/group.c user/kmacy/HEAD_ECMP/usr.sbin/nscd/agents/passwd.c user/kmacy/HEAD_ECMP/usr.sbin/nscd/agents/services.c user/kmacy/HEAD_ECMP/usr.sbin/nscd/cachelib.c user/kmacy/HEAD_ECMP/usr.sbin/nscd/nscd.c user/kmacy/HEAD_ECMP/usr.sbin/nscd/nscdcli.c user/kmacy/HEAD_ECMP/usr.sbin/pciconf/pciconf.c user/kmacy/HEAD_ECMP/usr.sbin/sysinstall/package.c Modified: user/kmacy/HEAD_ECMP/bin/cp/utils.c ============================================================================== --- user/kmacy/HEAD_ECMP/bin/cp/utils.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/bin/cp/utils.c Tue Oct 28 06:16:47 2008 (r184393) @@ -137,41 +137,39 @@ copy_file(const FTSENT *entp, int dne) * Mmap and write if less than 8M (the limit is so we don't totally * trash memory on big files. This is really a minor hack, but it * wins some CPU back. + * Some filesystems, such as smbnetfs, don't support mmap, + * so this is a best-effort attempt. */ #ifdef VM_AND_BUFFER_CACHE_SYNCHRONIZED if (S_ISREG(fs->st_mode) && fs->st_size > 0 && - fs->st_size <= 8 * 1048576) { - if ((p = mmap(NULL, (size_t)fs->st_size, PROT_READ, - MAP_SHARED, from_fd, (off_t)0)) == MAP_FAILED) { + fs->st_size <= 8 * 1024 * 1024 && + (p = mmap(NULL, (size_t)fs->st_size, PROT_READ, + MAP_SHARED, from_fd, (off_t)0)) != MAP_FAILED) { + wtotal = 0; + for (bufp = p, wresid = fs->st_size; ; + bufp += wcount, wresid -= (size_t)wcount) { + wcount = write(to_fd, bufp, wresid); + if (wcount <= 0) + break; + wtotal += wcount; + if (info) { + info = 0; + (void)fprintf(stderr, + "%s -> %s %3d%%\n", + entp->fts_path, to.p_path, + cp_pct(wtotal, fs->st_size)); + } + if (wcount >= (ssize_t)wresid) + break; + } + if (wcount != (ssize_t)wresid) { + warn("%s", to.p_path); + rval = 1; + } + /* Some systems don't unmap on close(2). */ + if (munmap(p, fs->st_size) < 0) { warn("%s", entp->fts_path); rval = 1; - } else { - wtotal = 0; - for (bufp = p, wresid = fs->st_size; ; - bufp += wcount, wresid -= (size_t)wcount) { - wcount = write(to_fd, bufp, wresid); - if (wcount <= 0) - break; - wtotal += wcount; - if (info) { - info = 0; - (void)fprintf(stderr, - "%s -> %s %3d%%\n", - entp->fts_path, to.p_path, - cp_pct(wtotal, fs->st_size)); - } - if (wcount >= (ssize_t)wresid) - break; - } - if (wcount != (ssize_t)wresid) { - warn("%s", to.p_path); - rval = 1; - } - /* Some systems don't unmap on close(2). */ - if (munmap(p, fs->st_size) < 0) { - warn("%s", entp->fts_path); - rval = 1; - } } } else #endif Modified: user/kmacy/HEAD_ECMP/contrib/tcsh/sh.c ============================================================================== --- user/kmacy/HEAD_ECMP/contrib/tcsh/sh.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/contrib/tcsh/sh.c Tue Oct 28 06:16:47 2008 (r184393) @@ -462,7 +462,7 @@ main(int argc, char **argv) else cp2 = cp; if (!(((Strncmp(cp2, STRtty, 3) == 0) && Isalpha(cp2[3])) || - Strstr(cp, STRslptssl) != NULL)) { + Strstr(cp, STRptssl) != NULL)) { if (getenv("DISPLAY") == NULL) { /* NOT on X window shells */ setcopy(STRautologout, STRdefautologout, VAR_READWRITE); Modified: user/kmacy/HEAD_ECMP/contrib/tcsh/tc.const.c ============================================================================== --- user/kmacy/HEAD_ECMP/contrib/tcsh/tc.const.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/contrib/tcsh/tc.const.c Tue Oct 28 06:16:47 2008 (r184393) @@ -46,7 +46,7 @@ Char STRautomatic[] = { 'a', 'u', 't', ' Char STRhangup[] = { 'h', 'a', 'n', 'g', 'u', 'p', '\0' }; Char STRaout[] = { 'a', '.', 'o', 'u', 't', '\0' }; Char STRtty[] = { 't', 't', 'y', '\0' }; -Char STRslptssl[] = { '/', 'p', 't', 's', '/', '\0' }; +Char STRptssl[] = { 'p', 't', 's', '/', '\0' }; Char STRany[] = { 'a', 'n', 'y', '\0' }; Char STRstatus[] = { 's', 't', 'a', 't', 'u', 's', '\0' }; Char STR0[] = { '0', '\0' }; Modified: user/kmacy/HEAD_ECMP/crypto/openssh/loginrec.c ============================================================================== --- user/kmacy/HEAD_ECMP/crypto/openssh/loginrec.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/crypto/openssh/loginrec.c Tue Oct 28 06:16:47 2008 (r184393) @@ -146,7 +146,6 @@ */ #include "includes.h" -__RCSID("$FreeBSD$"); #include #include @@ -689,8 +688,8 @@ construct_utmp(struct logininfo *li, strncpy(ut->ut_name, li->username, MIN_SIZEOF(ut->ut_name, li->username)); # ifdef HAVE_HOST_IN_UTMP - realhostname_sa(ut->ut_host, sizeof ut->ut_host, - &li->hostaddr.sa, li->hostaddr.sa.sa_len); + strncpy(ut->ut_host, li->hostname, + MIN_SIZEOF(ut->ut_host, li->hostname)); # endif # ifdef HAVE_ADDR_IN_UTMP /* this is just a 32-bit IP address */ Modified: user/kmacy/HEAD_ECMP/crypto/openssh/sshd.c ============================================================================== --- user/kmacy/HEAD_ECMP/crypto/openssh/sshd.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/crypto/openssh/sshd.c Tue Oct 28 06:16:47 2008 (r184393) @@ -72,6 +72,7 @@ __RCSID("$FreeBSD$"); #include #include #include +#include #include #include @@ -238,7 +239,7 @@ u_char *session_id2 = NULL; u_int session_id2_len = 0; /* record remote hostname or ip */ -u_int utmp_len = MAXHOSTNAMELEN; +u_int utmp_len = UT_HOSTSIZE; /* options.max_startup sized array of fd ints */ int *startup_pipes = NULL; Modified: user/kmacy/HEAD_ECMP/etc/Makefile ============================================================================== --- user/kmacy/HEAD_ECMP/etc/Makefile Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/etc/Makefile Tue Oct 28 06:16:47 2008 (r184393) @@ -8,7 +8,7 @@ SUBDIR= sendmail .endif BIN1= auth.conf \ - crontab csh.cshrc csh.login csh.logout devd.conf devfs.conf \ + crontab devd.conf devfs.conf \ ddb.conf dhclient.conf disktab fbtab \ ftpusers gettytab group \ hosts hosts.allow hosts.equiv \ @@ -84,6 +84,10 @@ BIN1+= portsnap.conf BIN1+= pf.os .endif +.if ${MK_TCSH} != "no" +BIN1+= csh.cshrc csh.login csh.logout +.endif + .if ${MK_WIRELESS} != "no" BIN1+= regdomain.xml .endif @@ -148,9 +152,12 @@ distribution: ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 755 \ ${BIN2} ${DESTDIR}/etc; \ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 600 \ - master.passwd nsmb.conf opieaccess ${DESTDIR}/etc; \ - pwd_mkdb ${PWD_MKDB_ENDIAN} -i -p -d ${DESTDIR}/etc \ - ${DESTDIR}/etc/master.passwd + master.passwd nsmb.conf opieaccess ${DESTDIR}/etc; +.if ${MK_TCSH} == "no" + sed -i "" -e 's;/bin/csh;;' ${DESTDIR}/etc/master.passwd +.endif + pwd_mkdb ${PWD_MKDB_ENDIAN} -i -p -d ${DESTDIR}/etc \ + ${DESTDIR}/etc/master.passwd .if ${MK_BLUETOOTH} != "no" ${_+_}cd ${.CURDIR}/bluetooth; ${MAKE} install .endif @@ -195,14 +202,18 @@ distribution: .endif cd ${.CURDIR}/root; \ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ + dot.profile ${DESTDIR}/root/.profile; \ + rm -f ${DESTDIR}/.profile; \ + ln ${DESTDIR}/root/.profile ${DESTDIR}/.profile +.if ${MK_TCSH} != "no" + cd ${.CURDIR}/root; \ + ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ dot.cshrc ${DESTDIR}/root/.cshrc; \ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ dot.login ${DESTDIR}/root/.login; \ - ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ - dot.profile ${DESTDIR}/root/.profile; \ - rm -f ${DESTDIR}/.cshrc ${DESTDIR}/.profile; \ - ln ${DESTDIR}/root/.cshrc ${DESTDIR}/.cshrc; \ - ln ${DESTDIR}/root/.profile ${DESTDIR}/.profile + rm -f ${DESTDIR}/.cshrc; \ + ln ${DESTDIR}/root/.cshrc ${DESTDIR}/.cshrc +.endif cd ${.CURDIR}/mtree; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 \ ${MTREE} ${DESTDIR}/etc/mtree .if ${MK_PPP} != "no" Modified: user/kmacy/HEAD_ECMP/etc/devd.conf ============================================================================== --- user/kmacy/HEAD_ECMP/etc/devd.conf Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/etc/devd.conf Tue Oct 28 06:16:47 2008 (r184393) @@ -256,6 +256,7 @@ notify 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 { match "system" "ACPI"; match "subsystem" "ASUS-Eee"; Modified: user/kmacy/HEAD_ECMP/etc/periodic/security/200.chkmounts ============================================================================== --- user/kmacy/HEAD_ECMP/etc/periodic/security/200.chkmounts Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/etc/periodic/security/200.chkmounts Tue Oct 28 06:16:47 2008 (r184393) @@ -50,7 +50,7 @@ case "$daily_status_security_chkmounts_e ignore="${ignore}|^amd:" esac [ -n "$ignore" ] && cmd="egrep -v ${ignore#|}" || cmd=cat - mount -p | ${cmd} | + mount -p | sort | ${cmd} | check_diff mount - "${host} changes in mounted filesystems:" rc=$?;; *) rc=0;; Modified: user/kmacy/HEAD_ECMP/etc/rc.subr ============================================================================== --- user/kmacy/HEAD_ECMP/etc/rc.subr Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/etc/rc.subr Tue Oct 28 06:16:47 2008 (r184393) @@ -913,6 +913,7 @@ run_rc_script() else ( trap "echo Script $_file interrupted; kill -QUIT $$" 3 trap "echo Script $_file interrupted; exit 1" 2 + trap "echo Script $_file running" 29 set $_arg; . $_file ) fi fi Modified: user/kmacy/HEAD_ECMP/etc/remote ============================================================================== --- user/kmacy/HEAD_ECMP/etc/remote Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/etc/remote Tue Oct 28 06:16:47 2008 (r184393) @@ -66,3 +66,11 @@ uart4|com5:dv=/dev/cuau4:br#9600:pa=none uart5|com6:dv=/dev/cuau5:br#9600:pa=none: uart6|com7:dv=/dev/cuau6:br#9600:pa=none: uart7|com8:dv=/dev/cuau7:br#9600:pa=none: +ucom1:dv=/dev/cuaU0:br#9600:pa=none: +ucom2:dv=/dev/cuaU1:br#9600:pa=none: +ucom3:dv=/dev/cuaU2:br#9600:pa=none: +ucom4:dv=/dev/cuaU3:br#9600:pa=none: +ucom5:dv=/dev/cuaU4:br#9600:pa=none: +ucom6:dv=/dev/cuaU5:br#9600:pa=none: +ucom7:dv=/dev/cuaU6:br#9600:pa=none: +ucom8:dv=/dev/cuaU7:br#9600:pa=none: Modified: user/kmacy/HEAD_ECMP/lib/libarchive/archive_read_support_format_zip.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libarchive/archive_read_support_format_zip.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libarchive/archive_read_support_format_zip.c Tue Oct 28 06:16:47 2008 (r184393) @@ -444,7 +444,9 @@ zip_read_file_header(struct archive_read archive_entry_set_mtime(entry, zip->mtime, 0); archive_entry_set_ctime(entry, zip->ctime, 0); archive_entry_set_atime(entry, zip->atime, 0); - archive_entry_set_size(entry, zip->uncompressed_size); + /* Set the size only if it's meaningful. */ + if (0 == (zip->flags & ZIP_LENGTH_AT_END)) + archive_entry_set_size(entry, zip->uncompressed_size); zip->entry_bytes_remaining = zip->compressed_size; zip->entry_offset = 0; @@ -573,12 +575,16 @@ archive_read_format_zip_read_data(struct } break; } + if (r != ARCHIVE_OK) + return (r); /* Update checksum */ - if (r == ARCHIVE_OK && *size) { + if (*size) zip->entry_crc32 = crc32(zip->entry_crc32, *buff, *size); - } - return (r); + /* Return EOF immediately if this is a non-regular file. */ + if (AE_IFREG != (zip->mode & AE_IFMT)) + return (ARCHIVE_EOF); + return (ARCHIVE_OK); } /* Modified: user/kmacy/HEAD_ECMP/lib/libarchive/archive_util.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libarchive/archive_util.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libarchive/archive_util.c Tue Oct 28 06:16:47 2008 (r184393) @@ -168,6 +168,7 @@ archive_set_error(struct archive *a, int va_start(ap, fmt); archive_string_vsprintf(&(a->error_string), fmt, ap); + va_end(ap); if (error_number > 0) { archive_strcat(&(a->error_string), ": "); #ifdef HAVE_STRERROR_R @@ -184,7 +185,6 @@ archive_set_error(struct archive *a, int archive_strcat(&(a->error_string), errp); } a->error = a->error_string.s; - va_end(ap); } void Modified: user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.c Tue Oct 28 06:16:47 2008 (r184393) @@ -25,6 +25,12 @@ #include "test.h" __FBSDID("$FreeBSD$"); +/* + * The reference file for this has been manually tweaked so that: + * * file2 has length-at-end but file1 does not + * * file2 has an invalid CRC + */ + DEFINE_TEST(test_read_format_zip) { const char *refname = "test_read_format_zip.zip"; @@ -57,7 +63,8 @@ DEFINE_TEST(test_read_format_zip) assertA(0 == archive_read_next_header(a, &ae)); assertEqualString("file2", archive_entry_pathname(ae)); assertEqualInt(1179605932, archive_entry_mtime(ae)); - assertEqualInt(18, archive_entry_size(ae)); + failure("file2 has length-at-end, so we shouldn't see a valid size"); + assertEqualInt(0, archive_entry_size_is_set(ae)); failure("file2 has a bad CRC, so reading to end should fail"); assertEqualInt(ARCHIVE_WARN, archive_read_data(a, buff, 19)); assert(0 == memcmp(buff, "hello\nhello\nhello\n", 18)); Modified: user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.zip.uu ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.zip.uu Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libarchive/test/test_read_format_zip.zip.uu Tue Oct 28 06:16:47 2008 (r184393) @@ -1,13 +1,14 @@ $FreeBSD$ begin 644 test_read_format_zip.zip -M4$L#!`H``````%EFLS8````````````````$`!4`9&ER+U54"0`#&55/1AE5 -M3T95>`0`Z`/H`U!+`P04````"`!O9K,V.C=F/0H````2````!0`5`&9I;&4Q -M550)``-!54]&K%M/1E5X!`#H`^@#RTC-R%8T$@H````2````!0`5`&9I;&4R550)``.L6T]&K%M/1E5X!`#H`^@#RTC- -MR%8T$@H````2````!0`-```````!````I(%Y```` -H9FEL93)55`4``ZQ;3T95>```4$L%!@`````#``,`OP```+L````````` +M4$L#!`H`"````%EFLS8````````````````$`!4`9&ER+U54"0`#&55/1M19 +M_4A5>`0`Z`/H`U!+!P@```````````````!02P,$%`````@`;V:S-CHW9CT* +M````$@````4`%0!F:6QE,554"0`#055/1L!9_4A5>`0`Z`/H`\M(S`0`Z`/H`\M(S```4$L!`A<#%``(``@`;V:S-CHW9CT*````$@````4`#0`` +M`````0```.V!1P```&9I;&4Q550%``-!54]&57@``%!+`0(7`Q0`"``(`%IJ +MLS8Z-V8]"@```!(````%``T```````$```#M@8D```!F:6QE,E54!0`#K%M/ +;1E5X``!02P4&``````,``P"_````VP`````` ` end Modified: user/kmacy/HEAD_ECMP/lib/libc/gen/__xuname.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libc/gen/__xuname.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libc/gen/__xuname.c Tue Oct 28 06:16:47 2008 (r184393) @@ -45,94 +45,102 @@ __xuname(int namesize, void *namebuf) { int mib[2], rval; size_t len; - char *p; + char *p, *q; int oerrno; - struct xutsname { - char sysname[namesize]; /* Name of this OS. */ - char nodename[namesize]; /* Name of this network node. */ - char release[namesize]; /* Release level. */ - char version[namesize]; /* Version level. */ - char machine[namesize]; /* Hardware type. */ - } *name; - name = (struct xutsname *)namebuf; rval = 0; + q = (char *)namebuf; mib[0] = CTL_KERN; - mib[1] = KERN_OSTYPE; - len = sizeof(name->sysname); - oerrno = errno; - if (sysctl(mib, 2, &name->sysname, &len, NULL, 0) == -1) { - if(errno == ENOMEM) - errno = oerrno; - else - rval = -1; - } - name->sysname[sizeof(name->sysname) - 1] = '\0'; + if ((p = getenv("UNAME_s"))) - strlcpy(name->sysname, p, sizeof(name->sysname)); + strlcpy(q, p, namesize); + else { + mib[1] = KERN_OSTYPE; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; + else + rval = -1; + } + q[namesize - 1] = '\0'; + } + q += namesize; - mib[0] = CTL_KERN; mib[1] = KERN_HOSTNAME; - len = sizeof(name->nodename); + len = namesize; oerrno = errno; - if (sysctl(mib, 2, &name->nodename, &len, NULL, 0) == -1) { - if(errno == ENOMEM) + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) errno = oerrno; else rval = -1; } - name->nodename[sizeof(name->nodename) - 1] = '\0'; + q[namesize - 1] = '\0'; + q += namesize; - mib[0] = CTL_KERN; - mib[1] = KERN_OSRELEASE; - len = sizeof(name->release); - oerrno = errno; - if (sysctl(mib, 2, &name->release, &len, NULL, 0) == -1) { - if(errno == ENOMEM) - errno = oerrno; - else - rval = -1; - } - name->release[sizeof(name->release) - 1] = '\0'; if ((p = getenv("UNAME_r"))) - strlcpy(name->release, p, sizeof(name->release)); - - /* The version may have newlines in it, turn them into spaces. */ - mib[0] = CTL_KERN; - mib[1] = KERN_VERSION; - len = sizeof(name->version); - oerrno = errno; - if (sysctl(mib, 2, &name->version, &len, NULL, 0) == -1) { - if (errno == ENOMEM) - errno = oerrno; - else - rval = -1; - } - name->version[sizeof(name->version) - 1] = '\0'; - for (p = name->version; len--; ++p) { - if (*p == '\n' || *p == '\t') { - if (len > 1) - *p = ' '; + strlcpy(q, p, namesize); + else { + mib[1] = KERN_OSRELEASE; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; else - *p = '\0'; + rval = -1; } + q[namesize - 1] = '\0'; } + q += namesize; + if ((p = getenv("UNAME_v"))) - strlcpy(name->version, p, sizeof(name->version)); + strlcpy(q, p, namesize); + else { - mib[0] = CTL_HW; - mib[1] = HW_MACHINE; - len = sizeof(name->machine); - oerrno = errno; - if (sysctl(mib, 2, &name->machine, &len, NULL, 0) == -1) { - if (errno == ENOMEM) - errno = oerrno; - else - rval = -1; + /* + * The version may have newlines in it, turn them into + * spaces. + */ + mib[1] = KERN_VERSION; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; + else + rval = -1; + } + q[namesize - 1] = '\0'; + for (p = q; len--; ++p) { + if (*p == '\n' || *p == '\t') { + if (len > 1) + *p = ' '; + else + *p = '\0'; + } + } } - name->machine[sizeof(name->machine) - 1] = '\0'; + q += namesize; + if ((p = getenv("UNAME_m"))) - strlcpy(name->machine, p, sizeof(name->machine)); + strlcpy(q, p, namesize); + else { + mib[0] = CTL_HW; + mib[1] = HW_MACHINE; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; + else + rval = -1; + } + q[namesize - 1] = '\0'; + } + return (rval); } Modified: user/kmacy/HEAD_ECMP/lib/libc/gen/posix_spawn.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libc/gen/posix_spawn.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libc/gen/posix_spawn.c Tue Oct 28 06:16:47 2008 (r184393) @@ -444,7 +444,7 @@ posix_spawnattr_setpgroup(posix_spawnatt } int -posix_spawnattr_setschedparam(posix_spawnattr_t *sa __restrict, +posix_spawnattr_setschedparam(posix_spawnattr_t * __restrict sa, const struct sched_param * __restrict schedparam) { (*sa)->sa_schedparam = *schedparam; Modified: user/kmacy/HEAD_ECMP/lib/libc/string/strlcpy.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libc/string/strlcpy.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libc/string/strlcpy.c Tue Oct 28 06:16:47 2008 (r184393) @@ -1,35 +1,21 @@ -/* $OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $ */ +/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ /* * Copyright (c) 1998 Todd C. Miller - * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. + * 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. * - * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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. + * 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. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $"; -#endif /* LIBC_SCCS and not lint */ #include __FBSDID("$FreeBSD$"); @@ -42,21 +28,18 @@ __FBSDID("$FreeBSD$"); * Returns strlen(src); if retval >= siz, truncation occurred. */ size_t -strlcpy(dst, src, siz) - char *dst; - const char *src; - size_t siz; +strlcpy(char *dst, const char *src, size_t siz) { char *d = dst; const char *s = src; size_t n = siz; /* Copy as many bytes as will fit */ - if (n != 0 && --n != 0) { - do { - if ((*d++ = *s++) == 0) + if (n != 0) { + while (--n != 0) { + if ((*d++ = *s++) == '\0') break; - } while (--n != 0); + } } /* Not enough room in dst, add NUL and traverse rest of src */ Modified: user/kmacy/HEAD_ECMP/lib/libc/string/strxfrm.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libc/string/strxfrm.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libc/string/strxfrm.c Tue Oct 28 06:16:47 2008 (r184393) @@ -45,17 +45,8 @@ strxfrm(char * __restrict dest, const ch return 0; } - if (__collate_load_error) { - slen = strlen(src); - if (len > 0) { - if (slen < len) - strcpy(dest, src); - else { - strlcpy(dest, src, len); - } - } - return slen; - } + if (__collate_load_error) + return strlcpy(dest, src, len); slen = 0; prim = sec = 0; Modified: user/kmacy/HEAD_ECMP/lib/libc/sys/mmap.2 ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libc/sys/mmap.2 Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libc/sys/mmap.2 Tue Oct 28 06:16:47 2008 (r184393) @@ -28,7 +28,7 @@ .\" @(#)mmap.2 8.4 (Berkeley) 5/11/95 .\" $FreeBSD$ .\" -.Dd April 21, 2006 +.Dd October 24, 2008 .Dt MMAP 2 .Os .Sh NAME @@ -252,6 +252,11 @@ In the future we may define an additiona in which the file descriptor argument specifies a file or device to which swapping should be done. +.Sh NOTES +Although this implementation does not impose any alignment restrictions on +the +.Fa offset +argument, a portable program must only use page-aligned values. .Sh RETURN VALUES Upon successful completion, .Fn mmap @@ -307,13 +312,6 @@ was negative. was specified and the .Fa fd argument was not -1. -The -.Fa offset -argument -was not page-aligned. -(See -.Sx BUGS -below.) .It Bq Er ENODEV .Dv MAP_ANON has not been specified and Modified: user/kmacy/HEAD_ECMP/lib/libcam/camlib.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libcam/camlib.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libcam/camlib.c Tue Oct 28 06:16:47 2008 (r184393) @@ -346,6 +346,9 @@ cam_open_btl(path_id_t path_id, target_i bzero(&ccb, sizeof(union ccb)); ccb.ccb_h.func_code = XPT_DEV_MATCH; + ccb.ccb_h.path_id = CAM_XPT_PATH_ID; + ccb.ccb_h.target_id = CAM_TARGET_WILDCARD; + ccb.ccb_h.target_lun = CAM_LUN_WILDCARD; /* Setup the result buffer */ bufsize = sizeof(struct dev_match_result); Modified: user/kmacy/HEAD_ECMP/lib/libfetch/http.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libfetch/http.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libfetch/http.c Tue Oct 28 06:16:47 2008 (r184393) @@ -1064,6 +1064,7 @@ http_request(struct url *URL, const char if (url->offset == size && url->length == 0) { /* asked for 0 bytes; fake it */ offset = url->offset; + clength = -1; conn->err = HTTP_OK; break; } else { Modified: user/kmacy/HEAD_ECMP/lib/libutil/flopen.3 ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libutil/flopen.3 Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libutil/flopen.3 Tue Oct 28 06:16:47 2008 (r184393) @@ -46,12 +46,13 @@ The function opens or creates a file and acquires an exclusive lock on it. It is essentially equivalent with calling .Fn open -with the same parameters followed by -.Fn flock -with an -.Va operation -argument of -.Dv LOCK_EX , +with the same parameters followed by an +.Fn fcntl +.Dv F_SETLK +or +.Dv F_SETLKW +operation with lock type +.Dv F_WRLCK , except that .Fn flopen will attempt to detect and handle races that may occur between opening @@ -86,12 +87,12 @@ returns a valid file descriptor. Otherwise, it returns -1, and sets .Va errno as described in -.Xr flock 2 +.Xr fcntl 2 and .Xr open 2 . .Sh SEE ALSO .Xr errno 2 , -.Xr flock 2 , +.Xr fcntl 2 , .Xr open 2 .Sh HISTORY The Modified: user/kmacy/HEAD_ECMP/lib/libutil/flopen.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libutil/flopen.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libutil/flopen.c Tue Oct 28 06:16:47 2008 (r184393) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2007 Dag-Erling Coïdan Smørgrav + * Copyright (c) 2007 Dag-Erling Coïdan Smørgrav * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,12 +28,12 @@ #include __FBSDID("$FreeBSD$"); -#include #include #include #include #include +#include #include #include @@ -42,6 +42,7 @@ int flopen(const char *path, int flags, ...) { int fd, operation, serrno, trunc; + struct flock lock; struct stat sb, fsb; mode_t mode; @@ -54,13 +55,14 @@ flopen(const char *path, int flags, ...) va_list ap; va_start(ap, flags); - mode = va_arg(ap, int); /* mode_t promoted to int */ + mode = (mode_t)va_arg(ap, int); /* mode_t promoted to int */ va_end(ap); } - operation = LOCK_EX; - if (flags & O_NONBLOCK) - operation |= LOCK_NB; + memset(&lock, 0, sizeof lock); + lock.l_type = ((flags & O_ACCMODE) == O_RDONLY) ? F_RDLCK : F_WRLCK; + lock.l_whence = SEEK_SET; + operation = (flags & O_NONBLOCK) ? F_SETLK : F_SETLKW; trunc = (flags & O_TRUNC); flags &= ~O_TRUNC; @@ -69,35 +71,35 @@ flopen(const char *path, int flags, ...) if ((fd = open(path, flags, mode)) == -1) /* non-existent or no access */ return (-1); - if (flock(fd, operation) == -1) { + if (fcntl(fd, operation, &lock) == -1) { /* unsupported or interrupted */ serrno = errno; - close(fd); + (void)close(fd); errno = serrno; return (-1); } if (stat(path, &sb) == -1) { /* disappeared from under our feet */ - close(fd); + (void)close(fd); continue; } if (fstat(fd, &fsb) == -1) { /* can't happen [tm] */ serrno = errno; - close(fd); + (void)close(fd); errno = serrno; return (-1); } if (sb.st_dev != fsb.st_dev || sb.st_ino != fsb.st_ino) { /* changed under our feet */ - close(fd); + (void)close(fd); continue; } if (trunc && ftruncate(fd, 0) != 0) { /* can't happen [tm] */ serrno = errno; - close(fd); + (void)close(fd); errno = serrno; return (-1); } Modified: user/kmacy/HEAD_ECMP/lib/libutil/login_cap.h ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libutil/login_cap.h Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libutil/login_cap.h Tue Oct 28 06:16:47 2008 (r184393) @@ -81,7 +81,7 @@ typedef struct login_time { #define LTM_NONE 0x00 #define LTM_SUN 0x01 #define LTM_MON 0x02 -#define LTM_TUE 0x04 +#define LTM_TUE 0x04 #define LTM_WED 0x08 #define LTM_THU 0x10 #define LTM_FRI 0x20 @@ -104,7 +104,8 @@ login_cap_t *login_getclass(const char * login_cap_t *login_getpwclass(const struct passwd *); login_cap_t *login_getuserclass(const struct passwd *); -const char *login_getcapstr(login_cap_t*, const char *, const char *, const char *); +const char *login_getcapstr(login_cap_t *, const char *, const char *, + const char *); const char **login_getcaplist(login_cap_t *, const char *, const char *); const char *login_getstyle(login_cap_t *, const char *, const char *); rlim_t login_getcaptime(login_cap_t *, const char *, rlim_t, rlim_t); @@ -114,45 +115,51 @@ const char *login_getpath(login_cap_t *, int login_getcapbool(login_cap_t *, const char *, int); const char *login_setcryptfmt(login_cap_t *, const char *, const char *); -int setclasscontext(const char*, unsigned int); -int setusercontext(login_cap_t*, const struct passwd*, uid_t, unsigned int); +int setclasscontext(const char *, unsigned int); +void setclasscpumask(login_cap_t *); +int setusercontext(login_cap_t *, const struct passwd *, uid_t, unsigned int); void setclassresources(login_cap_t *); void setclassenvironment(login_cap_t *, const struct passwd *, int); /* Most of these functions are deprecated */ -int auth_approve(login_cap_t*, const char*, const char*); +int auth_approve(login_cap_t *, const char *, const char *); int auth_check(const char *, const char *, const char *, const char *, int *); void auth_env(void); -char *auth_mkvalue(const char *n); -int auth_response(const char *, const char *, const char *, const char *, int *, const char *, const char *); +char *auth_mkvalue(const char *); +int auth_response(const char *, const char *, const char *, const char *, int *, + const char *, const char *); void auth_rmfiles(void); int auth_scan(int); -int auth_script(const char*, ...); +int auth_script(const char *, ...); int auth_script_data(const char *, int, const char *, ...); char *auth_valud(const char *); int auth_setopt(const char *, const char *); void auth_clropts(void); -void auth_checknologin(login_cap_t*); -int auth_cat(const char*); +void auth_checknologin(login_cap_t *); +int auth_cat(const char *); -int auth_ttyok(login_cap_t*, const char *); -int auth_hostok(login_cap_t*, const char *, char const *); -int auth_timeok(login_cap_t*, time_t); +int auth_ttyok(login_cap_t *, const char *); +int auth_hostok(login_cap_t *, const char *, char const *); +int auth_timeok(login_cap_t *, time_t); struct tm; login_time_t parse_lt(const char *); +int in_lt(const login_time_t *, time_t *); int in_ltm(const login_time_t *, struct tm *, time_t *); int in_ltms(const login_time_t *, struct tm *, time_t *); +int in_lts(const login_time_t *, time_t *); /* helper functions */ int login_strinlist(const char **, char const *, int); int login_str2inlist(const char **, const char *, const char *, int); -login_time_t * login_timelist(login_cap_t *, char const *, int *, login_time_t **); +login_time_t * login_timelist(login_cap_t *, char const *, int *, + login_time_t **); int login_ttyok(login_cap_t *, const char *, const char *, const char *); -int login_hostok(login_cap_t *, const char *, const char *, const char *, const char *); +int login_hostok(login_cap_t *, const char *, const char *, const char *, + const char *); __END_DECLS Modified: user/kmacy/HEAD_ECMP/lib/libutil/login_class.3 ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libutil/login_class.3 Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libutil/login_class.3 Tue Oct 28 06:16:47 2008 (r184393) @@ -19,11 +19,12 @@ .\" .\" $FreeBSD$ .\" -.Dd December 28, 1996 +.Dd October 20, 2008 .Os .Dt LOGIN_CLASS 3 .Sh NAME .Nm setclasscontext , +.Nm setclasscpumask , .Nm setclassenvironment , .Nm setclassresources , .Nm setusercontext @@ -35,12 +36,14 @@ .In login_cap.h .Ft int .Fn setclasscontext "const char *classname" "unsigned int flags" -.Ft int -.Fn setusercontext "login_cap_t *lc" "const struct passwd *pwd" "uid_t uid" "unsigned int flags" .Ft void -.Fn setclassresources "login_cap_t *lc" +.Fn setclasscpumask "login_cap_t *lc" .Ft void .Fn setclassenvironment "login_cap_t *lc" "const struct passwd *pwd" "int paths" +.Ft void +.Fn setclassresources "login_cap_t *lc" +.Ft int +.Fn setusercontext "login_cap_t *lc" "const struct passwd *pwd" "uid_t uid" "unsigned int flags" .Sh DESCRIPTION These functions provide a higher level interface to the login class database than those documented in @@ -162,7 +165,7 @@ and set the cpu affinity to the specifie The string may contain a comma separated list of numbers and/or number ranges as handled by the .Xr cpuset 1 -utility or the case-insensitive string +utility or the case-insensitive string .Ql default . If the string is .Ql default @@ -182,6 +185,7 @@ are substituted for the user's home dire respectively. .Pp The +.Fn setclasscpumask , .Fn setclassresources and .Fn setclassenvironment Modified: user/kmacy/HEAD_ECMP/lib/libutil/login_class.c ============================================================================== --- user/kmacy/HEAD_ECMP/lib/libutil/login_class.c Tue Oct 28 06:15:43 2008 (r184392) +++ user/kmacy/HEAD_ECMP/lib/libutil/login_class.c Tue Oct 28 06:16:47 2008 (r184393) @@ -25,14 +25,16 @@ #include __FBSDID("$FreeBSD$"); -#include #include -#include -#include -#include #include #include +#include #include +#include +#include + +#include +#include #include #include #include @@ -92,7 +94,7 @@ setclassresources(login_cap_t *lc) if (getrlimit(lr->why, &rlim) != 0) syslog(LOG_ERR, "getting %s resource limit: %m", lr->what); else { - char name_cur[40]; + char name_cur[40]; char name_max[40]; rlim_t rcur = rlim.rlim_cur; rlim_t rmax = rlim.rlim_max; @@ -104,7 +106,7 @@ setclassresources(login_cap_t *lc) rmax = (*lr->who)(lc, lr->what, rmax, rmax); rlim.rlim_cur = (*lr->who)(lc, name_cur, rcur, rcur); rlim.rlim_max = (*lr->who)(lc, name_max, rmax, rmax); - + if (setrlimit(lr->why, &rlim) == -1) syslog(LOG_WARNING, "set class '%s' resource limit %s: %m", lc->lc_class, lr->what); } @@ -185,7 +187,7 @@ substvar(const char * var, const struct } } - return np; + return (np); } @@ -309,7 +311,7 @@ list2cpuset(const char *list, cpuset_t * *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 06:25:00 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE8661065674; Tue, 28 Oct 2008 06:25:00 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C79A38FC22; Tue, 28 Oct 2008 06:25:00 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S6P0UO084930; Tue, 28 Oct 2008 06:25:00 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S6P0qn084923; Tue, 28 Oct 2008 06:25:00 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280625.m9S6P0qn084923@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 06:25:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184394 - in user/kmacy/HEAD_fast_xmit/sys/dev: adb age ar ata ath ath/ath_rate/amrr ath/ath_rate/onoe ath/ath_rate/sample bge ce cfe cfi drm hwpmc iwn lmc mii mxge ofw pci ppbus ppc pu... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 06:25:01 -0000 Author: kmacy Date: Tue Oct 28 06:25:00 2008 New Revision: 184394 URL: http://svn.freebsd.org/changeset/base/184394 Log: IF_HEAD_ECMP part1 184390:184393 Added: user/kmacy/HEAD_fast_xmit/sys/dev/adb/ user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb.h user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_bus.c user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_hb_if.m user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_if.m user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_kbd.c user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_mouse.c user/kmacy/HEAD_fast_xmit/sys/dev/adb/adbvar.h user/kmacy/HEAD_fast_xmit/sys/dev/cfi/ user/kmacy/HEAD_fast_xmit/sys/dev/cfi/cfi_bus_lbc.c user/kmacy/HEAD_fast_xmit/sys/dev/cfi/cfi_core.c user/kmacy/HEAD_fast_xmit/sys/dev/cfi/cfi_dev.c user/kmacy/HEAD_fast_xmit/sys/dev/cfi/cfi_reg.h user/kmacy/HEAD_fast_xmit/sys/dev/cfi/cfi_var.h user/kmacy/HEAD_fast_xmit/sys/dev/sdhci/ user/kmacy/HEAD_fast_xmit/sys/dev/sdhci/sdhci.c user/kmacy/HEAD_fast_xmit/sys/dev/sdhci/sdhci.h Modified: user/kmacy/HEAD_fast_xmit/sys/dev/age/if_age.c user/kmacy/HEAD_fast_xmit/sys/dev/age/if_agevar.h user/kmacy/HEAD_fast_xmit/sys/dev/ar/if_ar.c user/kmacy/HEAD_fast_xmit/sys/dev/ata/ata-dma.c user/kmacy/HEAD_fast_xmit/sys/dev/ata/ata-queue.c user/kmacy/HEAD_fast_xmit/sys/dev/ath/ah_osdep.c user/kmacy/HEAD_fast_xmit/sys/dev/ath/ath_rate/amrr/amrr.c user/kmacy/HEAD_fast_xmit/sys/dev/ath/ath_rate/onoe/onoe.c user/kmacy/HEAD_fast_xmit/sys/dev/ath/ath_rate/sample/sample.c user/kmacy/HEAD_fast_xmit/sys/dev/ath/if_ath.c user/kmacy/HEAD_fast_xmit/sys/dev/ath/if_athrate.h user/kmacy/HEAD_fast_xmit/sys/dev/ath/if_athvar.h user/kmacy/HEAD_fast_xmit/sys/dev/bge/if_bge.c user/kmacy/HEAD_fast_xmit/sys/dev/ce/if_ce.c user/kmacy/HEAD_fast_xmit/sys/dev/cfe/cfe_console.c user/kmacy/HEAD_fast_xmit/sys/dev/drm/drm_drv.c user/kmacy/HEAD_fast_xmit/sys/dev/drm/drm_fops.c user/kmacy/HEAD_fast_xmit/sys/dev/drm/drm_lock.c user/kmacy/HEAD_fast_xmit/sys/dev/drm/i915_dma.c user/kmacy/HEAD_fast_xmit/sys/dev/drm/radeon_cp.c user/kmacy/HEAD_fast_xmit/sys/dev/drm/radeon_drv.h user/kmacy/HEAD_fast_xmit/sys/dev/hwpmc/hwpmc_amd.c user/kmacy/HEAD_fast_xmit/sys/dev/hwpmc/hwpmc_logging.c user/kmacy/HEAD_fast_xmit/sys/dev/hwpmc/hwpmc_mod.c user/kmacy/HEAD_fast_xmit/sys/dev/hwpmc/hwpmc_piv.c user/kmacy/HEAD_fast_xmit/sys/dev/hwpmc/hwpmc_ppro.c user/kmacy/HEAD_fast_xmit/sys/dev/hwpmc/hwpmc_x86.c user/kmacy/HEAD_fast_xmit/sys/dev/iwn/if_iwn.c user/kmacy/HEAD_fast_xmit/sys/dev/lmc/if_lmc.c user/kmacy/HEAD_fast_xmit/sys/dev/mii/atphy.c user/kmacy/HEAD_fast_xmit/sys/dev/mii/ciphy.c user/kmacy/HEAD_fast_xmit/sys/dev/mii/miidevs user/kmacy/HEAD_fast_xmit/sys/dev/mxge/eth_z8e.h user/kmacy/HEAD_fast_xmit/sys/dev/mxge/ethp_z8e.h user/kmacy/HEAD_fast_xmit/sys/dev/mxge/rss_eth_z8e.h user/kmacy/HEAD_fast_xmit/sys/dev/mxge/rss_ethp_z8e.h user/kmacy/HEAD_fast_xmit/sys/dev/ofw/ofw_console.c user/kmacy/HEAD_fast_xmit/sys/dev/pci/pci.c user/kmacy/HEAD_fast_xmit/sys/dev/pci/pcireg.h user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/if_plip.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/immio.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/lpbb.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/lpt.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/pcfclock.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/ppb_base.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/ppb_msq.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/ppbconf.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/ppbconf.h user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/ppi.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/pps.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/vpo.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/vpoio.c user/kmacy/HEAD_fast_xmit/sys/dev/ppbus/vpoio.h user/kmacy/HEAD_fast_xmit/sys/dev/ppc/ppc.c user/kmacy/HEAD_fast_xmit/sys/dev/ppc/ppcreg.h user/kmacy/HEAD_fast_xmit/sys/dev/puc/pucdata.c user/kmacy/HEAD_fast_xmit/sys/dev/ral/rt2560.c user/kmacy/HEAD_fast_xmit/sys/dev/ral/rt2661.c user/kmacy/HEAD_fast_xmit/sys/dev/ray/if_ray.c user/kmacy/HEAD_fast_xmit/sys/dev/ray/if_rayvar.h user/kmacy/HEAD_fast_xmit/sys/dev/sound/pci/hda/hdac.c user/kmacy/HEAD_fast_xmit/sys/dev/sr/if_sr.c user/kmacy/HEAD_fast_xmit/sys/dev/uart/uart_tty.c user/kmacy/HEAD_fast_xmit/sys/dev/usb/if_zyd.c user/kmacy/HEAD_fast_xmit/sys/dev/usb/u3g.c user/kmacy/HEAD_fast_xmit/sys/dev/usb/ubsa.c user/kmacy/HEAD_fast_xmit/sys/dev/usb/ucom.c user/kmacy/HEAD_fast_xmit/sys/dev/usb/udbp.c user/kmacy/HEAD_fast_xmit/sys/dev/usb/ufoma.c user/kmacy/HEAD_fast_xmit/sys/dev/wpi/if_wpi.c user/kmacy/HEAD_fast_xmit/sys/dev/xen/console/console.c Added: user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb.h Tue Oct 28 06:25:00 2008 (r184394) @@ -0,0 +1,78 @@ +/*- + * Copyright (C) 2008 Nathan Whitehorn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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. + * + * $FreeBSD$ + */ + +#ifndef _POWERPC_ADB_H_ +#define _POWERPC_ADB_H_ + +#include "adb_hb_if.h" +#include "adb_if.h" + +enum { + ADB_COMMAND_FLUSH = 0, + ADB_COMMAND_LISTEN = 2, + ADB_COMMAND_TALK = 3, +}; + +enum { + ADB_DEVICE_DONGLE = 0x01, + ADB_DEVICE_KEYBOARD = 0x02, + ADB_DEVICE_MOUSE = 0x03, + ADB_DEVICE_TABLET = 0x04, + ADB_DEVICE_MODEM = 0x05, + + ADB_DEVICE_MISC = 0x07 +}; + +struct adb_devinfo { + uint8_t address; + uint8_t default_address; + uint8_t handler_id; + + uint16_t register3; +}; + +/* Pass packets down through the bus manager */ +u_int adb_send_packet(device_t dev, u_char command, u_char reg, int len, + u_char *data); +u_int adb_set_autopoll(device_t dev, u_char enable); + +/* Pass packets up from the interface */ +u_int adb_receive_raw_packet(device_t dev, u_char status, u_char command, + int len, u_char *data); + +uint8_t adb_get_device_type(device_t dev); +uint8_t adb_get_device_handler(device_t dev); +uint8_t adb_set_device_handler(device_t dev, uint8_t newhandler); + +uint8_t adb_read_register(device_t dev, u_char reg, size_t *len, void *data); + +/* Bits for implementing ADB host bus adapters */ +extern devclass_t adb_devclass; +extern driver_t adb_driver; + +#endif + Added: user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_bus.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_bus.c Tue Oct 28 06:25:00 2008 (r184394) @@ -0,0 +1,384 @@ +/*- + * Copyright (C) 2008 Nathan Whitehorn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include "adb.h" +#include "adbvar.h" + +static int adb_bus_probe(device_t dev); +static int adb_bus_attach(device_t dev); +static int adb_bus_detach(device_t dev); +static void adb_probe_nomatch(device_t dev, device_t child); +static int adb_print_child(device_t dev, device_t child); + +static int adb_send_raw_packet_sync(device_t dev, uint8_t to, uint8_t command, uint8_t reg, int len, u_char *data); + +static char *adb_device_string[] = { + "HOST", "dongle", "keyboard", "mouse", "tablet", "modem", "RESERVED", "misc" +}; + +static device_method_t adb_bus_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, adb_bus_probe), + DEVMETHOD(device_attach, adb_bus_attach), + DEVMETHOD(device_detach, adb_bus_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + /* Bus Interface */ + DEVMETHOD(bus_probe_nomatch, adb_probe_nomatch), + DEVMETHOD(bus_print_child, adb_print_child), + + { 0, 0 }, +}; + +driver_t adb_driver = { + "adb", + adb_bus_methods, + sizeof(struct adb_softc), +}; + +devclass_t adb_devclass; + +static int +adb_bus_probe(device_t dev) +{ + device_set_desc(dev, "Apple Desktop Bus"); + return (0); +} + +static int +adb_bus_attach(device_t dev) +{ + struct adb_softc *sc = device_get_softc(dev); + uint8_t i, next_free; + uint16_t r3; + + sc->sc_dev = dev; + sc->parent = device_get_parent(dev); + + sc->packet_reply = 0; + sc->autopoll_mask = 0; + + mtx_init(&sc->sc_sync_mtx,"adbsyn",NULL,MTX_DEF | MTX_RECURSE); + + /* Initialize devinfo */ + for (i = 0; i < 16; i++) { + sc->devinfo[i].address = i; + sc->devinfo[i].default_address = 0; + } + + /* Reset ADB bus */ + adb_send_raw_packet_sync(dev,0,ADB_COMMAND_BUS_RESET,0,0,NULL); + DELAY(1500); + + /* Enumerate bus */ + next_free = 8; + + for (i = 1; i < 7; i++) { + int8_t first_relocated = -1; + int reply = 0; + + do { + reply = adb_send_raw_packet_sync(dev,i, + ADB_COMMAND_TALK,3,0,NULL); + + if (reply) { + /* If we got a response, relocate to next_free */ + r3 = sc->devinfo[i].register3; + r3 &= 0xf000; + r3 |= ((uint16_t)(next_free) & 0x000f) << 8; + r3 |= 0x00fe; + + adb_send_raw_packet_sync(dev,i, ADB_COMMAND_LISTEN,3, + sizeof(uint16_t),(u_char *)(&r3)); + + adb_send_raw_packet_sync(dev,next_free, + ADB_COMMAND_TALK,3,0,NULL); + + sc->devinfo[next_free].default_address = i; + if (first_relocated < 0) + first_relocated = next_free; + + next_free++; + } else if (first_relocated > 0) { + /* Collisions removed, relocate first device back */ + + r3 = sc->devinfo[i].register3; + r3 &= 0xf000; + r3 |= ((uint16_t)(i) & 0x000f) << 8; + + adb_send_raw_packet_sync(dev,first_relocated, + ADB_COMMAND_LISTEN,3, + sizeof(uint16_t),(u_char *)(&r3)); + adb_send_raw_packet_sync(dev,i, + ADB_COMMAND_TALK,3,0,NULL); + + sc->devinfo[i].default_address = i; + sc->devinfo[(int)(first_relocated)].default_address = 0; + break; + } + } while (reply); + } + + for (i = 0; i < 16; i++) { + if (sc->devinfo[i].default_address) { + sc->children[i] = device_add_child(dev, NULL, -1); + device_set_ivars(sc->children[i], &sc->devinfo[i]); + } + } + + return (bus_generic_attach(dev)); +} + +static int adb_bus_detach(device_t dev) +{ + struct adb_softc *sc = device_get_softc(dev); + + mtx_destroy(&sc->sc_sync_mtx); + + return (bus_generic_detach(dev)); +} + + +static void +adb_probe_nomatch(device_t dev, device_t child) +{ + struct adb_devinfo *dinfo; + + if (bootverbose) { + dinfo = device_get_ivars(child); + + device_printf(dev,"ADB %s at device %d (no driver attached)\n", + adb_device_string[dinfo->default_address],dinfo->address); + } +} + +u_int +adb_receive_raw_packet(device_t dev, u_char status, u_char command, int len, + u_char *data) +{ + struct adb_softc *sc = device_get_softc(dev); + u_char addr = command >> 4; + + if (len > 0 && (command & 0x0f) == ((ADB_COMMAND_TALK << 2) | 3)) { + memcpy(&sc->devinfo[addr].register3,data,2); + sc->devinfo[addr].handler_id = data[1]; + } + + if (sc->sync_packet == command) { + memcpy(sc->syncreg,data,(len > 8) ? 8 : len); + atomic_store_rel_int(&sc->packet_reply,len + 1); + } + + if (sc->children[addr] != NULL) { + ADB_RECEIVE_PACKET(sc->children[addr],status, + (command & 0x0f) >> 2,command & 0x03,len,data); + } + + return (0); +} + +static int +adb_print_child(device_t dev, device_t child) +{ + struct adb_devinfo *dinfo; + int retval = 0; + + dinfo = device_get_ivars(child); + + retval += bus_print_child_header(dev,child); + printf(" at device %d",dinfo->address); + retval += bus_print_child_footer(dev, child); + + return (retval); +} + +u_int +adb_send_packet(device_t dev, u_char command, u_char reg, int len, u_char *data) +{ + u_char command_byte = 0; + struct adb_devinfo *dinfo; + struct adb_softc *sc; + + sc = device_get_softc(device_get_parent(dev)); + dinfo = device_get_ivars(dev); + + command_byte |= dinfo->address << 4; + command_byte |= command << 2; + command_byte |= reg; + + ADB_HB_SEND_RAW_PACKET(sc->parent, command_byte, len, data, 1); + + return (0); +} + +u_int +adb_set_autopoll(device_t dev, u_char enable) +{ + struct adb_devinfo *dinfo; + struct adb_softc *sc; + uint16_t mod = 0; + + sc = device_get_softc(device_get_parent(dev)); + dinfo = device_get_ivars(dev); + + mod = enable << dinfo->address; + if (enable) { + sc->autopoll_mask |= mod; + } else { + mod = ~mod; + sc->autopoll_mask &= mod; + } + + ADB_HB_SET_AUTOPOLL_MASK(sc->parent,sc->autopoll_mask); + + return (0); +} + +uint8_t +adb_get_device_type(device_t dev) +{ + struct adb_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + return (dinfo->default_address); +} + +uint8_t +adb_get_device_handler(device_t dev) +{ + struct adb_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + return (dinfo->handler_id); +} + +static int +adb_send_raw_packet_sync(device_t dev, uint8_t to, uint8_t command, + uint8_t reg, int len, u_char *data) +{ + u_char command_byte = 0; + struct adb_softc *sc; + int result = -1; + int i = 0; + + sc = device_get_softc(dev); + + command_byte |= to << 4; + command_byte |= command << 2; + command_byte |= reg; + + /* Wait if someone else has a synchronous request pending */ + mtx_lock(&sc->sc_sync_mtx); + + sc->packet_reply = 0; + sc->sync_packet = command_byte; + + ADB_HB_SEND_RAW_PACKET(sc->parent, command_byte, len, data, 1); + + while (!atomic_fetchadd_int(&sc->packet_reply,0)) { + /* Sometimes CUDA controllers hang up during cold boots. + Try poking them. */ + if (i > 10) + ADB_HB_CONTROLLER_POLL(sc->parent); + + DELAY(100); + i++; + } + + result = sc->packet_reply - 1; + + /* Clear packet sync */ + sc->packet_reply = 0; + sc->sync_packet = 0xffff; /* We can't match a 16 bit value */ + + mtx_unlock(&sc->sc_sync_mtx); + + return (result); +} + +uint8_t +adb_set_device_handler(device_t dev, uint8_t newhandler) +{ + struct adb_softc *sc; + struct adb_devinfo *dinfo; + uint16_t newr3; + + dinfo = device_get_ivars(dev); + sc = device_get_softc(device_get_parent(dev)); + + newr3 = dinfo->register3 & 0xff00; + newr3 |= (uint16_t)(newhandler); + + adb_send_raw_packet_sync(sc->sc_dev,dinfo->address, + ADB_COMMAND_LISTEN, 3, sizeof(uint16_t), (u_char *)(&newr3)); + adb_send_raw_packet_sync(sc->sc_dev,dinfo->address, + ADB_COMMAND_TALK, 3, 0, NULL); + + return (dinfo->handler_id); +} + +uint8_t +adb_read_register(device_t dev, u_char reg, + size_t *len, void *data) +{ + struct adb_softc *sc; + struct adb_devinfo *dinfo; + size_t orig_len; + + dinfo = device_get_ivars(dev); + sc = device_get_softc(device_get_parent(dev)); + + orig_len = *len; + + mtx_lock(&sc->sc_sync_mtx); + + *len = adb_send_raw_packet_sync(sc->sc_dev,dinfo->address, + ADB_COMMAND_TALK, reg, 0, NULL); + + if (*len > 0) + memcpy(data,sc->syncreg,*len); + + mtx_unlock(&sc->sc_sync_mtx); + + return ((*len > 0) ? 0 : -1); +} + Added: user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_hb_if.m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_hb_if.m Tue Oct 28 06:25:00 2008 (r184394) @@ -0,0 +1,58 @@ +#- +# Copyright (c) 2008 Nathan Whitehorn +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +# +# $FreeBSD$ +# + +#include + +#include + +INTERFACE adb_hb; + +# +# Bus level operations. These are used by the ADB bus manager, and are +# required to inplement an ADB interface. +# + +METHOD u_int send_raw_packet { + device_t dev; + u_char command_byte; + + int len; + u_char *data; + u_char poll; +}; + +METHOD u_int controller_poll { + device_t dev; +}; + +METHOD u_int set_autopoll_mask { + device_t dev; + + uint16_t mask; +}; + Added: user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_if.m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_if.m Tue Oct 28 06:25:00 2008 (r184394) @@ -0,0 +1,49 @@ +#- +# Copyright (c) 2008 Nathan Whitehorn +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +# +# $FreeBSD$ +# + +#include + +#include + +INTERFACE adb; + +# +# Driver level operations +# + +METHOD u_int receive_packet { + device_t dev; + + u_char status; + u_char command; + u_char reg; + + int len; + u_char *data; +}; + Added: user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_kbd.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/dev/adb/adb_kbd.c Tue Oct 28 06:25:00 2008 (r184394) @@ -0,0 +1,692 @@ +/*- + * Copyright (C) 2008 Nathan Whitehorn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "opt_kbd.h" +#include +#include + +#include +#include + +#include "adb.h" + +#define KBD_DRIVER_NAME "akbd" + +#define AKBD_EMULATE_ATKBD 1 + +static int adb_kbd_probe(device_t dev); +static int adb_kbd_attach(device_t dev); +static int adb_kbd_detach(device_t dev); +static void akbd_repeat(void *xsc); + +static u_int adb_kbd_receive_packet(device_t dev, u_char status, + u_char command, u_char reg, int len, u_char *data); + +struct adb_kbd_softc { + keyboard_t sc_kbd; + + device_t sc_dev; + struct mtx sc_mutex; + struct cv sc_cv; + + int sc_mode; + int sc_state; + + int have_led_control; + + uint8_t buffer[8]; + volatile int buffers; + + struct callout sc_repeater; + int sc_repeatstart; + int sc_repeatcontinue; + uint8_t last_press; +}; + +static device_method_t adb_kbd_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, adb_kbd_probe), + DEVMETHOD(device_attach, adb_kbd_attach), + DEVMETHOD(device_detach, adb_kbd_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + /* ADB interface */ + DEVMETHOD(adb_receive_packet, adb_kbd_receive_packet), + + { 0, 0 } +}; + +static driver_t adb_kbd_driver = { + "akbd", + adb_kbd_methods, + sizeof(struct adb_kbd_softc), +}; + +static devclass_t adb_kbd_devclass; + +DRIVER_MODULE(akbd, adb, adb_kbd_driver, adb_kbd_devclass, 0, 0); + +static const uint8_t adb_to_at_scancode_map[128] = { 30, 31, 32, 33, 35, 34, + 44, 45, 46, 47, 0, 48, 16, 17, 18, 19, 21, 20, 2, 3, 4, 5, 7, 6, 13, + 10, 8, 12, 9, 11, 27, 24, 22, 26, 23, 25, 28, 38, 36, 40, 37, 39, 43, + 51, 53, 49, 50, 52, 15, 57, 41, 14, 0, 1, 29, 0, 42, 58, 56, 97, 98, + 100, 95, 0, 0, 83, 0, 55, 0, 78, 0, 69, 0, 0, 0, 91, 89, 0, 74, 13, 0, + 0, 82, 79, 80, 81, 75, 76, 77, 71, 0, 72, 73, 0, 0, 0, 63, 64, 65, 61, + 66, 67, 0, 87, 0, 105, 0, 70, 0, 68, 0, 88, 0, 107, 102, 94, 96, 103, + 62, 99, 60, 101, 59, 54, 93, 90, 0, 0 }; + +/* keyboard driver declaration */ +static int akbd_configure(int flags); +static kbd_probe_t akbd_probe; +static kbd_init_t akbd_init; +static kbd_term_t akbd_term; +static kbd_intr_t akbd_interrupt; +static kbd_test_if_t akbd_test_if; +static kbd_enable_t akbd_enable; +static kbd_disable_t akbd_disable; +static kbd_read_t akbd_read; +static kbd_check_t akbd_check; +static kbd_read_char_t akbd_read_char; +static kbd_check_char_t akbd_check_char; +static kbd_ioctl_t akbd_ioctl; +static kbd_lock_t akbd_lock; +static kbd_clear_state_t akbd_clear_state; +static kbd_get_state_t akbd_get_state; +static kbd_set_state_t akbd_set_state; +static kbd_poll_mode_t akbd_poll; + +keyboard_switch_t akbdsw = { + akbd_probe, + akbd_init, + akbd_term, + akbd_interrupt, + akbd_test_if, + akbd_enable, + akbd_disable, + akbd_read, + akbd_check, + akbd_read_char, + akbd_check_char, + akbd_ioctl, + akbd_lock, + akbd_clear_state, + akbd_get_state, + akbd_set_state, + genkbd_get_fkeystr, + akbd_poll, + genkbd_diag, +}; + +KEYBOARD_DRIVER(akbd, akbdsw, akbd_configure); + +static int +adb_kbd_probe(device_t dev) +{ + uint8_t type; + + type = adb_get_device_type(dev); + + if (type != ADB_DEVICE_KEYBOARD) + return (ENXIO); + + switch(adb_get_device_handler(dev)) { + case 1: + device_set_desc(dev,"Apple Standard Keyboard"); + break; + case 2: + device_set_desc(dev,"Apple Extended Keyboard"); + break; + case 4: + device_set_desc(dev,"Apple ISO Keyboard"); + break; + case 5: + device_set_desc(dev,"Apple Extended ISO Keyboard"); + break; + case 8: + device_set_desc(dev,"Apple Keyboard II"); + break; + case 9: + device_set_desc(dev,"Apple ISO Keyboard II"); + break; + case 12: + device_set_desc(dev,"PowerBook Keyboard"); + break; + case 13: + device_set_desc(dev,"PowerBook ISO Keyboard"); + break; + case 24: + device_set_desc(dev,"PowerBook Extended Keyboard"); + break; + case 27: + device_set_desc(dev,"Apple Design Keyboard"); + break; + case 195: + device_set_desc(dev,"PowerBook G3 Keyboard"); + break; + case 196: + device_set_desc(dev,"iBook Keyboard"); + break; + default: + device_set_desc(dev,"ADB Keyboard"); + break; + } + + return (0); +} + +static int +ms_to_ticks(int ms) +{ + if (hz > 1000) + return ms*(hz/1000); + + return ms/(1000/hz); +} + +static int +adb_kbd_attach(device_t dev) +{ + struct adb_kbd_softc *sc; + keyboard_switch_t *sw; + + sw = kbd_get_switch(KBD_DRIVER_NAME); + if (sw == NULL) { + return ENXIO; + } + + sc = device_get_softc(dev); + sc->sc_dev = dev; + sc->sc_mode = K_RAW; + sc->sc_state = 0; + sc->have_led_control = 0; + sc->buffers = 0; + + /* Try stepping forward to the extended keyboard protocol */ + adb_set_device_handler(dev,3); + + mtx_init(&sc->sc_mutex,KBD_DRIVER_NAME,MTX_DEF,0); + cv_init(&sc->sc_cv,KBD_DRIVER_NAME); + callout_init(&sc->sc_repeater, 0); + +#ifdef AKBD_EMULATE_ATKBD + kbd_init_struct(&sc->sc_kbd, KBD_DRIVER_NAME, KB_101, 0, 0, 0, 0); + kbd_set_maps(&sc->sc_kbd, &key_map, &accent_map, fkey_tab, + sizeof(fkey_tab) / sizeof(fkey_tab[0])); +#else + #error ADB raw mode not implemented +#endif + + KBD_FOUND_DEVICE(&sc->sc_kbd); + KBD_PROBE_DONE(&sc->sc_kbd); + KBD_INIT_DONE(&sc->sc_kbd); + KBD_CONFIG_DONE(&sc->sc_kbd); + + (*sw->enable)(&sc->sc_kbd); + + kbd_register(&sc->sc_kbd); + +#ifdef KBD_INSTALL_CDEV + if (kbd_attach(&sc->sc_kbd)) { + adb_kbd_detach(dev); + return ENXIO; + } +#endif + + adb_set_autopoll(dev,1); + + /* Check (asynchronously) if we can read out the LED state from + this keyboard by reading the key state register */ + adb_send_packet(dev,ADB_COMMAND_TALK,2,0,NULL); + + return (0); +} + +static int +adb_kbd_detach(device_t dev) +{ + struct adb_kbd_softc *sc; + keyboard_t *kbd; + + sc = device_get_softc(dev); + + adb_set_autopoll(dev,0); + callout_stop(&sc->sc_repeater); + + mtx_lock(&sc->sc_mutex); + + kbd = kbd_get_keyboard(kbd_find_keyboard(KBD_DRIVER_NAME, + device_get_unit(dev))); + + kbdd_disable(kbd); + +#ifdef KBD_INSTALL_CDEV + kbd_detach(kbd); +#endif + + kbdd_term(kbd); + + mtx_unlock(&sc->sc_mutex); + + mtx_destroy(&sc->sc_mutex); + cv_destroy(&sc->sc_cv); + + return (0); +} + +static u_int +adb_kbd_receive_packet(device_t dev, u_char status, + u_char command, u_char reg, int len, u_char *data) +{ + struct adb_kbd_softc *sc; + + sc = device_get_softc(dev); + + if (command != ADB_COMMAND_TALK) + return 0; + + if (reg == 2 && len == 2) { + sc->have_led_control = 1; + return 0; + } + + if (reg != 0 || len != 2) + return (0); + + mtx_lock(&sc->sc_mutex); + if ((data[0] & 0x7f) == 57 && sc->buffers < 7) { + /* Fake the down/up cycle for caps lock */ + sc->buffer[sc->buffers++] = data[0] & 0x7f; + sc->buffer[sc->buffers++] = (data[0] & 0x7f) | (1 << 7); + } else { + sc->buffer[sc->buffers++] = data[0]; + } + + if (sc->buffer[sc->buffers-1] < 0xff) + sc->last_press = sc->buffer[sc->buffers-1]; + + if ((data[1] & 0x7f) == 57 && sc->buffers < 7) { + /* Fake the down/up cycle for caps lock */ + sc->buffer[sc->buffers++] = data[1] & 0x7f; + sc->buffer[sc->buffers++] = (data[1] & 0x7f) | (1 << 7); + } else { + sc->buffer[sc->buffers++] = data[1]; + } + + if (sc->buffer[sc->buffers-1] < 0xff) + sc->last_press = sc->buffer[sc->buffers-1]; + + /* Stop any existing key repeating */ + callout_stop(&sc->sc_repeater); + + /* Schedule a repeat callback on keydown */ + if (!(sc->last_press & (1 << 7))) { + callout_reset(&sc->sc_repeater, + ms_to_ticks(sc->sc_kbd.kb_delay1), akbd_repeat, sc); + } + mtx_unlock(&sc->sc_mutex); + + cv_broadcast(&sc->sc_cv); + + if (KBD_IS_ACTIVE(&sc->sc_kbd) && KBD_IS_BUSY(&sc->sc_kbd)) { + sc->sc_kbd.kb_callback.kc_func(&sc->sc_kbd, + KBDIO_KEYINPUT, sc->sc_kbd.kb_callback.kc_arg); + } + + return (0); +} + +static void +akbd_repeat(void *xsc) { + struct adb_kbd_softc *sc = xsc; + int notify_kbd = 0; + + /* Fake an up/down key repeat so long as we have the + free buffers */ + mtx_lock(&sc->sc_mutex); + if (sc->buffers < 7) { + sc->buffer[sc->buffers++] = sc->last_press | (1 << 7); + sc->buffer[sc->buffers++] = sc->last_press; + + notify_kbd = 1; + } + mtx_unlock(&sc->sc_mutex); + + if (notify_kbd && KBD_IS_ACTIVE(&sc->sc_kbd) + && KBD_IS_BUSY(&sc->sc_kbd)) { + sc->sc_kbd.kb_callback.kc_func(&sc->sc_kbd, + KBDIO_KEYINPUT, sc->sc_kbd.kb_callback.kc_arg); + } + + /* Reschedule the callout */ + callout_reset(&sc->sc_repeater, ms_to_ticks(sc->sc_kbd.kb_delay2), + akbd_repeat, sc); +} + +static int +akbd_configure(int flags) +{ + return 0; +} + +static int +akbd_probe(int unit, void *arg, int flags) +{ + return 0; +} + +static int *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 06:26:10 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 66A451065670; Tue, 28 Oct 2008 06:26:10 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 51D7D8FC27; Tue, 28 Oct 2008 06:26:10 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S6QAIR085023; Tue, 28 Oct 2008 06:26:10 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S6Q8xN084985; Tue, 28 Oct 2008 06:26:08 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280626.m9S6Q8xN084985@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 06:26:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184395 - in user/kmacy/HEAD_fast_xmit/sys: amd64/amd64 amd64/include amd64/linux32 arm/arm arm/at91 arm/conf cam/scsi compat/freebsd32 compat/linux conf contrib/altq/altq contrib/ipfil... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 06:26:10 -0000 Author: kmacy Date: Tue Oct 28 06:26:08 2008 New Revision: 184395 URL: http://svn.freebsd.org/changeset/base/184395 Log: IF_HEAD_ECMP part2 184390:184393 Added: user/kmacy/HEAD_fast_xmit/sys/arm/conf/DEFAULTS user/kmacy/HEAD_fast_xmit/sys/mips/conf/DEFAULTS user/kmacy/HEAD_fast_xmit/sys/modules/sdhci/ user/kmacy/HEAD_fast_xmit/sys/modules/sdhci/Makefile user/kmacy/HEAD_fast_xmit/sys/security/mac_bsdextended/ugidfw_internal.h user/kmacy/HEAD_fast_xmit/sys/security/mac_bsdextended/ugidfw_system.c user/kmacy/HEAD_fast_xmit/sys/security/mac_bsdextended/ugidfw_vnode.c user/kmacy/HEAD_fast_xmit/sys/sys/cfictl.h Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/identcpu.c user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/initcpu.c user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/local_apic.c user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/prof_machdep.c user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/tsc.c user/kmacy/HEAD_fast_xmit/sys/amd64/include/clock.h user/kmacy/HEAD_fast_xmit/sys/amd64/include/md_var.h user/kmacy/HEAD_fast_xmit/sys/amd64/include/specialreg.h user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux.h user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux32_sysvec.c user/kmacy/HEAD_fast_xmit/sys/arm/arm/undefined.c user/kmacy/HEAD_fast_xmit/sys/arm/at91/at91.c user/kmacy/HEAD_fast_xmit/sys/arm/conf/AVILA user/kmacy/HEAD_fast_xmit/sys/arm/conf/BWCT user/kmacy/HEAD_fast_xmit/sys/arm/conf/CRB user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-78XXX user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F5XXX user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F6XXX user/kmacy/HEAD_fast_xmit/sys/arm/conf/EP80219 user/kmacy/HEAD_fast_xmit/sys/arm/conf/GUMSTIX user/kmacy/HEAD_fast_xmit/sys/arm/conf/HL200 user/kmacy/HEAD_fast_xmit/sys/arm/conf/IQ31244 user/kmacy/HEAD_fast_xmit/sys/arm/conf/KB920X user/kmacy/HEAD_fast_xmit/sys/arm/conf/NSLU user/kmacy/HEAD_fast_xmit/sys/arm/conf/SIMICS user/kmacy/HEAD_fast_xmit/sys/arm/conf/SKYEYE user/kmacy/HEAD_fast_xmit/sys/cam/scsi/scsi_target.c user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_misc.c user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_proto.h user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscall.h user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscalls.c user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_sysent.c user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/syscalls.master user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_ioctl.c user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_signal.c user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_signal.h user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_socket.c user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_util.c user/kmacy/HEAD_fast_xmit/sys/conf/NOTES user/kmacy/HEAD_fast_xmit/sys/conf/files user/kmacy/HEAD_fast_xmit/sys/conf/files.arm user/kmacy/HEAD_fast_xmit/sys/conf/files.mips user/kmacy/HEAD_fast_xmit/sys/conf/files.powerpc user/kmacy/HEAD_fast_xmit/sys/conf/options user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_cbq.c user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_cdnr.c user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_hfsc.c user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_priq.c user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_red.c user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_rio.c user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_rmclass.c user/kmacy/HEAD_fast_xmit/sys/contrib/altq/altq/altq_subr.c user/kmacy/HEAD_fast_xmit/sys/contrib/ipfilter/netinet/ip_compat.h user/kmacy/HEAD_fast_xmit/sys/fs/cd9660/cd9660_node.c user/kmacy/HEAD_fast_xmit/sys/fs/cd9660/cd9660_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/cd9660/cd9660_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/fdescfs/fdesc_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/fdescfs/fdesc_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/fifofs/fifo_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/hpfs/hpfs_subr.c user/kmacy/HEAD_fast_xmit/sys/fs/hpfs/hpfs_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/hpfs/hpfs_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/msdosfs/msdosfs_denode.c user/kmacy/HEAD_fast_xmit/sys/fs/msdosfs/msdosfs_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/ntfs/ntfs_subr.c user/kmacy/HEAD_fast_xmit/sys/fs/ntfs/ntfs_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/ntfs/ntfs_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/nullfs/null_subr.c user/kmacy/HEAD_fast_xmit/sys/fs/nullfs/null_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/nwfs/nwfs_node.c user/kmacy/HEAD_fast_xmit/sys/fs/nwfs/nwfs_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/portalfs/portal_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/portalfs/portal_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/pseudofs/pseudofs.c user/kmacy/HEAD_fast_xmit/sys/fs/pseudofs/pseudofs_vncache.c user/kmacy/HEAD_fast_xmit/sys/fs/smbfs/smbfs_node.c user/kmacy/HEAD_fast_xmit/sys/fs/smbfs/smbfs_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/udf/udf_vfsops.c user/kmacy/HEAD_fast_xmit/sys/fs/udf/udf_vnops.c user/kmacy/HEAD_fast_xmit/sys/fs/unionfs/union_subr.c user/kmacy/HEAD_fast_xmit/sys/geom/geom_disk.c user/kmacy/HEAD_fast_xmit/sys/geom/part/g_part_bsd.c user/kmacy/HEAD_fast_xmit/sys/geom/part/g_part_pc98.c user/kmacy/HEAD_fast_xmit/sys/geom/part/g_part_vtoc8.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum.h user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_drive.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_init.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_plex.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_raid5.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_rm.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_state.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_subr.c user/kmacy/HEAD_fast_xmit/sys/geom/vinum/geom_vinum_volume.c user/kmacy/HEAD_fast_xmit/sys/gnu/fs/ext2fs/ext2_inode.c user/kmacy/HEAD_fast_xmit/sys/gnu/fs/ext2fs/ext2_lookup.c user/kmacy/HEAD_fast_xmit/sys/gnu/fs/ext2fs/ext2_vfsops.c user/kmacy/HEAD_fast_xmit/sys/gnu/fs/reiserfs/reiserfs_inode.c user/kmacy/HEAD_fast_xmit/sys/gnu/fs/reiserfs/reiserfs_vfsops.c user/kmacy/HEAD_fast_xmit/sys/i386/conf/NOTES user/kmacy/HEAD_fast_xmit/sys/i386/cpufreq/powernow.c user/kmacy/HEAD_fast_xmit/sys/i386/i386/apic_vector.s user/kmacy/HEAD_fast_xmit/sys/i386/i386/identcpu.c user/kmacy/HEAD_fast_xmit/sys/i386/i386/initcpu.c user/kmacy/HEAD_fast_xmit/sys/i386/i386/local_apic.c user/kmacy/HEAD_fast_xmit/sys/i386/i386/sys_machdep.c user/kmacy/HEAD_fast_xmit/sys/i386/i386/trap.c user/kmacy/HEAD_fast_xmit/sys/i386/i386/tsc.c user/kmacy/HEAD_fast_xmit/sys/i386/include/apicvar.h user/kmacy/HEAD_fast_xmit/sys/i386/include/clock.h user/kmacy/HEAD_fast_xmit/sys/i386/include/md_var.h user/kmacy/HEAD_fast_xmit/sys/i386/include/pcpu.h user/kmacy/HEAD_fast_xmit/sys/i386/include/smp.h user/kmacy/HEAD_fast_xmit/sys/i386/include/specialreg.h user/kmacy/HEAD_fast_xmit/sys/i386/include/xen/evtchn.h user/kmacy/HEAD_fast_xmit/sys/i386/include/xen/xen-os.h user/kmacy/HEAD_fast_xmit/sys/i386/include/xen/xen_intr.h user/kmacy/HEAD_fast_xmit/sys/i386/include/xen/xenfunc.h user/kmacy/HEAD_fast_xmit/sys/i386/isa/pmtimer.c user/kmacy/HEAD_fast_xmit/sys/i386/isa/prof_machdep.c user/kmacy/HEAD_fast_xmit/sys/i386/linux/linux.h user/kmacy/HEAD_fast_xmit/sys/i386/linux/linux_sysvec.c user/kmacy/HEAD_fast_xmit/sys/i386/xen/clock.c user/kmacy/HEAD_fast_xmit/sys/i386/xen/exception.s user/kmacy/HEAD_fast_xmit/sys/i386/xen/mp_machdep.c user/kmacy/HEAD_fast_xmit/sys/i386/xen/xen_machdep.c user/kmacy/HEAD_fast_xmit/sys/ia64/ia64/mp_machdep.c user/kmacy/HEAD_fast_xmit/sys/ia64/ia64/sscdisk.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_descrip.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_event.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_jail.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_linker.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_lockf.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_malloc.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_mtxpool.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_proc.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_prot.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_resource.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_sig.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_thr.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_thread.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_time.c user/kmacy/HEAD_fast_xmit/sys/kern/kern_timeout.c user/kmacy/HEAD_fast_xmit/sys/kern/subr_blist.c user/kmacy/HEAD_fast_xmit/sys/kern/subr_param.c user/kmacy/HEAD_fast_xmit/sys/kern/subr_rman.c user/kmacy/HEAD_fast_xmit/sys/kern/subr_sleepqueue.c user/kmacy/HEAD_fast_xmit/sys/kern/subr_stack.c user/kmacy/HEAD_fast_xmit/sys/kern/subr_witness.c user/kmacy/HEAD_fast_xmit/sys/kern/sys_process.c user/kmacy/HEAD_fast_xmit/sys/kern/tty.c user/kmacy/HEAD_fast_xmit/sys/kern/uipc_accf.c user/kmacy/HEAD_fast_xmit/sys/kern/uipc_mqueue.c user/kmacy/HEAD_fast_xmit/sys/kern/uipc_syscalls.c user/kmacy/HEAD_fast_xmit/sys/kern/uipc_usrreq.c user/kmacy/HEAD_fast_xmit/sys/kern/vfs_export.c user/kmacy/HEAD_fast_xmit/sys/kern/vfs_subr.c user/kmacy/HEAD_fast_xmit/sys/kern/vfs_syscalls.c user/kmacy/HEAD_fast_xmit/sys/kern/vfs_vnops.c user/kmacy/HEAD_fast_xmit/sys/kern/vnode_if.src user/kmacy/HEAD_fast_xmit/sys/mips/conf/ADM5120 user/kmacy/HEAD_fast_xmit/sys/mips/conf/IDT user/kmacy/HEAD_fast_xmit/sys/mips/conf/MALTA user/kmacy/HEAD_fast_xmit/sys/mips/conf/QEMU user/kmacy/HEAD_fast_xmit/sys/mips/conf/SENTRY5 user/kmacy/HEAD_fast_xmit/sys/modules/Makefile user/kmacy/HEAD_fast_xmit/sys/modules/mac_bsdextended/Makefile user/kmacy/HEAD_fast_xmit/sys/modules/u3g/Makefile user/kmacy/HEAD_fast_xmit/sys/net/bpf.c user/kmacy/HEAD_fast_xmit/sys/net/bsd_comp.c user/kmacy/HEAD_fast_xmit/sys/net/if.c user/kmacy/HEAD_fast_xmit/sys/net/if_arcsubr.c user/kmacy/HEAD_fast_xmit/sys/net/if_ethersubr.c user/kmacy/HEAD_fast_xmit/sys/net/if_fddisubr.c user/kmacy/HEAD_fast_xmit/sys/net/if_iso88025subr.c user/kmacy/HEAD_fast_xmit/sys/net/if_ppp.c user/kmacy/HEAD_fast_xmit/sys/net/if_sl.c user/kmacy/HEAD_fast_xmit/sys/net/if_tap.c user/kmacy/HEAD_fast_xmit/sys/net/if_tun.c user/kmacy/HEAD_fast_xmit/sys/net/ppp_deflate.c user/kmacy/HEAD_fast_xmit/sys/net/rtsock.c user/kmacy/HEAD_fast_xmit/sys/net80211/_ieee80211.h user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_adhoc.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_crypto.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_freebsd.h user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_hostap.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_ht.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_ht.h user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_input.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_ioctl.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_node.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_node.h user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_output.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_power.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_power.h user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_proto.h user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_regdomain.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_scan_sta.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_sta.c user/kmacy/HEAD_fast_xmit/sys/net80211/ieee80211_var.h user/kmacy/HEAD_fast_xmit/sys/netatalk/ddp_pcb.c user/kmacy/HEAD_fast_xmit/sys/netgraph/atm/sscfu/ng_sscfu_cust.h user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/drivers/h4/ng_h4.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/hci/ng_hci_main.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/hci/ng_hci_misc.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/l2cap/ng_l2cap_main.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.h user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c user/kmacy/HEAD_fast_xmit/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c user/kmacy/HEAD_fast_xmit/sys/netgraph/netflow/netflow.c user/kmacy/HEAD_fast_xmit/sys/netgraph/netflow/ng_netflow.c user/kmacy/HEAD_fast_xmit/sys/netgraph/netgraph.h user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_UI.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_async.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_atmllc.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_base.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_bpf.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_bridge.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_cisco.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_device.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_eiface.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_etf.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_ether.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_fec.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_frame_relay.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_gif.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_gif_demux.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_hole.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_iface.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_ipfw.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_ksocket.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_l2tp.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_lmi.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_message.h user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_mppc.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_nat.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_one2many.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_parse.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_pipe.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_ppp.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_pptpgre.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_rfc1490.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_sample.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_split.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_sppp.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_tag.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_tcpmss.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_tee.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_tty.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_vjc.c user/kmacy/HEAD_fast_xmit/sys/netgraph/ng_vlan.c user/kmacy/HEAD_fast_xmit/sys/netinet/igmp.c user/kmacy/HEAD_fast_xmit/sys/netinet/in.c user/kmacy/HEAD_fast_xmit/sys/netinet/in_mcast.c user/kmacy/HEAD_fast_xmit/sys/netinet/in_pcb.c user/kmacy/HEAD_fast_xmit/sys/netinet/in_pcb.h user/kmacy/HEAD_fast_xmit/sys/netinet/ip_carp.c user/kmacy/HEAD_fast_xmit/sys/netinet/sctp_os_bsd.h user/kmacy/HEAD_fast_xmit/sys/netinet/sctp_output.c user/kmacy/HEAD_fast_xmit/sys/netinet/sctp_timer.c user/kmacy/HEAD_fast_xmit/sys/netinet/sctp_timer.h user/kmacy/HEAD_fast_xmit/sys/netinet/tcp_input.c user/kmacy/HEAD_fast_xmit/sys/netinet/tcp_sack.c user/kmacy/HEAD_fast_xmit/sys/netinet/tcp_syncache.c user/kmacy/HEAD_fast_xmit/sys/netinet6/frag6.c user/kmacy/HEAD_fast_xmit/sys/netinet6/in6.c user/kmacy/HEAD_fast_xmit/sys/netinet6/in6_pcb.c user/kmacy/HEAD_fast_xmit/sys/netinet6/in6_src.c user/kmacy/HEAD_fast_xmit/sys/netinet6/ip6_var.h user/kmacy/HEAD_fast_xmit/sys/netinet6/raw_ip6.c user/kmacy/HEAD_fast_xmit/sys/netipsec/keysock.c user/kmacy/HEAD_fast_xmit/sys/netipsec/xform_ah.c user/kmacy/HEAD_fast_xmit/sys/netipx/ipx_pcb.c user/kmacy/HEAD_fast_xmit/sys/netipx/spx_usrreq.c user/kmacy/HEAD_fast_xmit/sys/netnatm/natm.c user/kmacy/HEAD_fast_xmit/sys/netnatm/natm_pcb.c user/kmacy/HEAD_fast_xmit/sys/netncp/ncp_conn.c user/kmacy/HEAD_fast_xmit/sys/netncp/ncp_rq.c user/kmacy/HEAD_fast_xmit/sys/netncp/ncp_sock.c user/kmacy/HEAD_fast_xmit/sys/netncp/ncp_subr.c user/kmacy/HEAD_fast_xmit/sys/netsmb/smb_rq.c user/kmacy/HEAD_fast_xmit/sys/netsmb/smb_trantcp.c user/kmacy/HEAD_fast_xmit/sys/nfs4client/nfs4_dev.c user/kmacy/HEAD_fast_xmit/sys/nfs4client/nfs4_idmap.c user/kmacy/HEAD_fast_xmit/sys/nfs4client/nfs4_socket.c user/kmacy/HEAD_fast_xmit/sys/nfs4client/nfs4_vfsops.c user/kmacy/HEAD_fast_xmit/sys/nfs4client/nfs4_vn_subs.c user/kmacy/HEAD_fast_xmit/sys/nfs4client/nfs4_vnops.c user/kmacy/HEAD_fast_xmit/sys/nfsclient/krpc_subr.c user/kmacy/HEAD_fast_xmit/sys/nfsclient/nfs_lock.c user/kmacy/HEAD_fast_xmit/sys/nfsclient/nfs_node.c user/kmacy/HEAD_fast_xmit/sys/nfsclient/nfs_socket.c user/kmacy/HEAD_fast_xmit/sys/nfsclient/nfs_subs.c user/kmacy/HEAD_fast_xmit/sys/nfsclient/nfs_vfsops.c user/kmacy/HEAD_fast_xmit/sys/nfsclient/nfs_vnops.c user/kmacy/HEAD_fast_xmit/sys/nfsserver/nfs_serv.c user/kmacy/HEAD_fast_xmit/sys/nfsserver/nfs_srvcache.c user/kmacy/HEAD_fast_xmit/sys/nfsserver/nfs_srvsock.c user/kmacy/HEAD_fast_xmit/sys/nfsserver/nfs_syscalls.c user/kmacy/HEAD_fast_xmit/sys/opencrypto/cryptodev.c user/kmacy/HEAD_fast_xmit/sys/opencrypto/cryptosoft.c user/kmacy/HEAD_fast_xmit/sys/opencrypto/deflate.c user/kmacy/HEAD_fast_xmit/sys/opencrypto/xform.c user/kmacy/HEAD_fast_xmit/sys/pc98/pc98/pc98_machdep.c user/kmacy/HEAD_fast_xmit/sys/pc98/pc98/pc98_machdep.h user/kmacy/HEAD_fast_xmit/sys/pci/if_rl.c user/kmacy/HEAD_fast_xmit/sys/pci/if_rlreg.h user/kmacy/HEAD_fast_xmit/sys/rpc/rpcclnt.c user/kmacy/HEAD_fast_xmit/sys/security/mac/mac_framework.h user/kmacy/HEAD_fast_xmit/sys/security/mac/mac_inet6.c user/kmacy/HEAD_fast_xmit/sys/security/mac/mac_policy.h user/kmacy/HEAD_fast_xmit/sys/security/mac_biba/mac_biba.c user/kmacy/HEAD_fast_xmit/sys/security/mac_bsdextended/mac_bsdextended.c user/kmacy/HEAD_fast_xmit/sys/security/mac_lomac/mac_lomac.c user/kmacy/HEAD_fast_xmit/sys/security/mac_mls/mac_mls.c user/kmacy/HEAD_fast_xmit/sys/security/mac_stub/mac_stub.c user/kmacy/HEAD_fast_xmit/sys/security/mac_test/mac_test.c user/kmacy/HEAD_fast_xmit/sys/sparc64/sparc64/db_trace.c user/kmacy/HEAD_fast_xmit/sys/sparc64/sparc64/stack_machdep.c user/kmacy/HEAD_fast_xmit/sys/sun4v/sun4v/db_trace.c user/kmacy/HEAD_fast_xmit/sys/sun4v/sun4v/stack_machdep.c user/kmacy/HEAD_fast_xmit/sys/sys/cdefs.h user/kmacy/HEAD_fast_xmit/sys/sys/cons.h user/kmacy/HEAD_fast_xmit/sys/sys/param.h user/kmacy/HEAD_fast_xmit/sys/sys/proc.h user/kmacy/HEAD_fast_xmit/sys/sys/syscallsubr.h user/kmacy/HEAD_fast_xmit/sys/ufs/ffs/ffs_inode.c user/kmacy/HEAD_fast_xmit/sys/ufs/ffs/ffs_snapshot.c user/kmacy/HEAD_fast_xmit/sys/ufs/ffs/ffs_softdep.c user/kmacy/HEAD_fast_xmit/sys/ufs/ffs/ffs_vfsops.c user/kmacy/HEAD_fast_xmit/sys/ufs/ffs/ffs_vnops.c user/kmacy/HEAD_fast_xmit/sys/ufs/ufs/ufs_dirhash.c user/kmacy/HEAD_fast_xmit/sys/ufs/ufs/ufs_extattr.c user/kmacy/HEAD_fast_xmit/sys/ufs/ufs/ufs_vnops.c user/kmacy/HEAD_fast_xmit/sys/vm/vm_mmap.c user/kmacy/HEAD_fast_xmit/sys/xen/evtchn/evtchn.c Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/identcpu.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/identcpu.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/identcpu.c Tue Oct 28 06:26:08 2008 (r184395) @@ -348,6 +348,19 @@ printcpuinfo(void) cpu_feature &= ~CPUID_HTT; /* + * If this CPU supports P-state invariant TSC then + * mention the capability. + */ + if (!tsc_is_invariant && + (strcmp(cpu_vendor, "AuthenticAMD") == 0 && + ((amd_pminfo & AMDPM_TSC_INVARIANT) != 0 || + AMD64_CPU_FAMILY(cpu_id) >= 0x10 || + cpu_id == 0x60fb2))) { + tsc_is_invariant = 1; + printf("\n TSC: P-state invariant"); + } + + /* * If this CPU supports HTT or CMP then mention the * number of physical/logical cores it contains. */ @@ -409,8 +422,11 @@ panicifcpuunsupported(void) static void tsc_freq_changed(void *arg, const struct cf_level *level, int status) { - /* If there was an error during the transition, don't do anything. */ - if (status != 0) + /* + * If there was an error during the transition or + * TSC is P-state invariant, don't do anything. + */ + if (status != 0 || tsc_is_invariant) return; /* Total setting for this level gives the new frequency in MHz. */ @@ -451,6 +467,10 @@ identify_cpu(void) amd_feature = regs[3] & ~(cpu_feature & 0x0183f3ff); amd_feature2 = regs[2]; } + if (cpu_exthigh >= 0x80000007) { + do_cpuid(0x80000007, regs); + amd_pminfo = regs[3]; + } if (cpu_exthigh >= 0x80000008) { do_cpuid(0x80000008, regs); cpu_procinfo2 = regs[2]; Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/initcpu.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/initcpu.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/initcpu.c Tue Oct 28 06:26:08 2008 (r184395) @@ -53,6 +53,7 @@ u_int cpu_feature; /* Feature flags */ u_int cpu_feature2; /* Feature flags */ u_int amd_feature; /* AMD feature flags */ u_int amd_feature2; /* AMD feature flags */ +u_int amd_pminfo; /* AMD advanced power management info */ u_int cpu_high; /* Highest arg to CPUID */ u_int cpu_exthigh; /* Highest arg to extended CPUID */ u_int cpu_id; /* Stepping ID */ Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/local_apic.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/local_apic.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/local_apic.c Tue Oct 28 06:26:08 2008 (r184395) @@ -401,7 +401,10 @@ lapic_setup_clock(void) lapic_timer_hz = hz * 2; else lapic_timer_hz = hz * 4; - stathz = lapic_timer_hz / (lapic_timer_hz / 128); + if (lapic_timer_hz < 128) + stathz = lapic_timer_hz; + else + stathz = lapic_timer_hz / (lapic_timer_hz / 128); profhz = lapic_timer_hz; lapic_timer_period = value / lapic_timer_hz; Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/prof_machdep.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/prof_machdep.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/prof_machdep.c Tue Oct 28 06:26:08 2008 (r184395) @@ -383,8 +383,11 @@ static void tsc_freq_changed(void *arg, const struct cf_level *level, int status) { - /* If there was an error during the transition, don't do anything. */ - if (status != 0) + /* + * If there was an error during the transition or + * TSC is P-state invariant, don't do anything. + */ + if (status != 0 || tsc_is_invariant) return; if (cputime_prof_active && cputime_clock == CPUTIME_CLOCK_TSC) printf("warning: cpu freq changed while profiling active\n"); Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/tsc.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/tsc.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/amd64/tsc.c Tue Oct 28 06:26:08 2008 (r184395) @@ -48,8 +48,13 @@ __FBSDID("$FreeBSD$"); uint64_t tsc_freq; int tsc_is_broken; +int tsc_is_invariant; static eventhandler_tag tsc_levels_tag, tsc_pre_tag, tsc_post_tag; +SYSCTL_INT(_kern_timecounter, OID_AUTO, invariant_tsc, CTLFLAG_RDTUN, + &tsc_is_invariant, 0, "Indicates whether the TSC is P-state invariant"); +TUNABLE_INT("kern.timecounter.invariant_tsc", &tsc_is_invariant); + #ifdef SMP static int smp_tsc; SYSCTL_INT(_kern_timecounter, OID_AUTO, smp_tsc, CTLFLAG_RDTUN, &smp_tsc, 0, @@ -174,11 +179,12 @@ static void tsc_freq_changing(void *arg, const struct cf_level *level, int *status) { - if (*status != 0 || timecounter != &tsc_timecounter) + if (*status != 0 || timecounter != &tsc_timecounter || + tsc_is_invariant) return; printf("timecounter TSC must not be in use when " - "changing frequencies; change denied\n"); + "changing frequencies; change denied\n"); *status = EBUSY; } @@ -186,8 +192,11 @@ tsc_freq_changing(void *arg, const struc static void tsc_freq_changed(void *arg, const struct cf_level *level, int status) { - /* If there was an error during the transition, don't do anything. */ - if (status != 0) + /* + * If there was an error during the transition or + * TSC is P-state invariant, don't do anything. + */ + if (status != 0 || tsc_is_invariant) return; /* Total setting for this level gives the new frequency in MHz. */ Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/include/clock.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/include/clock.h Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/include/clock.h Tue Oct 28 06:26:08 2008 (r184395) @@ -20,6 +20,7 @@ extern u_int i8254_freq; extern int i8254_max_count; extern uint64_t tsc_freq; extern int tsc_is_broken; +extern int tsc_is_invariant; void i8254_init(void); Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/include/md_var.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/include/md_var.h Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/include/md_var.h Tue Oct 28 06:26:08 2008 (r184395) @@ -44,6 +44,7 @@ extern u_int cpu_feature; extern u_int cpu_feature2; extern u_int amd_feature; extern u_int amd_feature2; +extern u_int amd_pminfo; extern u_int cpu_fxsr; extern u_int cpu_high; extern u_int cpu_id; Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/include/specialreg.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/include/specialreg.h Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/include/specialreg.h Tue Oct 28 06:26:08 2008 (r184395) @@ -153,6 +153,21 @@ #define AMDID2_PREFETCH 0x00000100 /* + * CPUID instruction 1 eax info + */ +#define CPUID_STEPPING 0x0000000f +#define CPUID_MODEL 0x000000f0 +#define CPUID_FAMILY 0x00000f00 +#define CPUID_EXT_MODEL 0x000f0000 +#define CPUID_EXT_FAMILY 0x0ff00000 +#define AMD64_CPU_MODEL(id) \ + ((((id) & CPUID_MODEL) >> 4) | \ + (((id) & CPUID_EXT_MODEL) >> 12)) +#define AMD64_CPU_FAMILY(id) \ + ((((id) & CPUID_FAMILY) >> 8) + \ + (((id) & CPUID_EXT_FAMILY) >> 20)) + +/* * CPUID instruction 1 ebx info */ #define CPUID_BRAND_INDEX 0x000000ff @@ -161,6 +176,19 @@ #define CPUID_LOCAL_APIC_ID 0xff000000 /* + * AMD extended function 8000_0007h edx info + */ +#define AMDPM_TS 0x00000001 +#define AMDPM_FID 0x00000002 +#define AMDPM_VID 0x00000004 +#define AMDPM_TTP 0x00000008 +#define AMDPM_TM 0x00000010 +#define AMDPM_STC 0x00000020 +#define AMDPM_100MHZ_STEPS 0x00000040 +#define AMDPM_HW_PSTATE 0x00000080 +#define AMDPM_TSC_INVARIANT 0x00000100 + +/* * AMD extended function 8000_0008h ecx info */ #define AMDID_CMP_CORES 0x000000ff Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux.h Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux.h Tue Oct 28 06:26:08 2008 (r184395) @@ -86,6 +86,8 @@ typedef l_long l_suseconds_t; typedef l_long l_time_t; typedef l_uint l_uid_t; typedef l_ushort l_uid16_t; +typedef l_int l_timer_t; +typedef l_int l_mqd_t; typedef struct { l_int val[2]; @@ -399,10 +401,10 @@ struct l_ucontext { #define LINUX_SI_MAX_SIZE 128 #define LINUX_SI_PAD_SIZE ((LINUX_SI_MAX_SIZE/sizeof(l_int)) - 3) -union l_sigval { +typedef union l_sigval { l_int sival_int; l_uintptr_t sival_ptr; -}; +} l_sigval_t; typedef struct l_siginfo { l_int lsi_signo; @@ -413,23 +415,26 @@ typedef struct l_siginfo { struct { l_pid_t _pid; - l_uid16_t _uid; + l_uid_t _uid; } __packed _kill; struct { - l_uint _timer1; - l_uint _timer2; + l_timer_t _tid; + l_int _overrun; + char _pad[sizeof(l_uid_t) - sizeof(l_int)]; + l_sigval_t _sigval; + l_int _sys_private; } __packed _timer; struct { l_pid_t _pid; /* sender's pid */ - l_uid16_t _uid; /* sender's uid */ - union l_sigval _sigval; + l_uid_t _uid; /* sender's uid */ + l_sigval_t _sigval; } __packed _rt; struct { l_pid_t _pid; /* which child */ - l_uid16_t _uid; /* sender's uid */ + l_uid_t _uid; /* sender's uid */ l_int _status; /* exit code */ l_clock_t _utime; l_clock_t _stime; @@ -440,7 +445,7 @@ typedef struct l_siginfo { } __packed _sigfault; struct { - l_int _band; /* POLL_IN,POLL_OUT,POLL_MSG */ + l_long _band; /* POLL_IN,POLL_OUT,POLL_MSG */ l_int _fd; } __packed _sigpoll; } _sifields; @@ -448,6 +453,9 @@ typedef struct l_siginfo { #define lsi_pid _sifields._kill._pid #define lsi_uid _sifields._kill._uid +#define lsi_tid _sifields._timer._tid +#define lsi_overrun _sifields._timer._overrun +#define lsi_sys_private _sifields._timer._sys_private #define lsi_status _sifields._sigchld._status #define lsi_utime _sifields._sigchld._utime #define lsi_stime _sifields._sigchld._stime @@ -860,9 +868,6 @@ struct l_user_desc { #define LINUX_CLOCK_REALTIME_HR 4 #define LINUX_CLOCK_MONOTONIC_HR 5 -typedef int l_timer_t; -typedef int l_mqd_t; - #define LINUX_CLONE_VM 0x00000100 #define LINUX_CLONE_FS 0x00000200 #define LINUX_CLONE_FILES 0x00000400 Modified: user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux32_sysvec.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/amd64/linux32/linux32_sysvec.c Tue Oct 28 06:26:08 2008 (r184395) @@ -334,9 +334,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo frame.sf_ucontext = PTROUT(&fp->sf_sc); /* Fill in POSIX parts */ - frame.sf_si.lsi_signo = sig; - frame.sf_si.lsi_code = code; - frame.sf_si.lsi_addr = PTROUT(ksi->ksi_addr); + ksiginfo_to_lsiginfo(ksi, &frame.sf_si, sig); /* * Build the signal context to be used by sigreturn. Modified: user/kmacy/HEAD_fast_xmit/sys/arm/arm/undefined.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/arm/undefined.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/arm/undefined.c Tue Oct 28 06:26:08 2008 (r184395) @@ -106,7 +106,7 @@ install_coproc_handler(int coproc, undef KASSERT(handler != NULL, ("handler is NULL")); /* Used to be legal. */ /* XXX: M_TEMP??? */ - MALLOC(uh, struct undefined_handler *, sizeof(*uh), M_TEMP, M_WAITOK); + uh = malloc(sizeof(*uh), M_TEMP, M_WAITOK); uh->uh_handler = handler; install_coproc_handler_static(coproc, uh); return uh; @@ -125,7 +125,7 @@ remove_coproc_handler(void *cookie) struct undefined_handler *uh = cookie; LIST_REMOVE(uh, uh_link); - FREE(uh, M_TEMP); + free(uh, M_TEMP); } Modified: user/kmacy/HEAD_fast_xmit/sys/arm/at91/at91.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/at91/at91.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/at91/at91.c Tue Oct 28 06:26:08 2008 (r184395) @@ -168,6 +168,42 @@ struct bus_space at91_bs_tag = { generic_armv4_bs_c_2, NULL, NULL, + + /* read (single) stream */ + generic_bs_r_1, + generic_armv4_bs_r_2, + generic_bs_r_4, + NULL, + + /* read multiple stream */ + generic_bs_rm_1, + generic_armv4_bs_rm_2, + generic_bs_rm_4, + NULL, + + /* read region stream */ + generic_bs_rr_1, + generic_armv4_bs_rr_2, + generic_bs_rr_4, + NULL, + + /* write (single) stream */ + generic_bs_w_1, + generic_armv4_bs_w_2, + generic_bs_w_4, + NULL, + + /* write multiple stream */ + generic_bs_wm_1, + generic_armv4_bs_wm_2, + generic_bs_wm_4, + NULL, + + /* write region stream */ + NULL, + generic_armv4_bs_wr_2, + generic_bs_wr_4, + NULL, }; static int @@ -534,8 +570,10 @@ at91_alloc_resource(device_t dev, device case SYS_RES_MEMORY: rle->res = rman_reserve_resource(&sc->sc_mem_rman, start, end, count, flags, child); - rman_set_bustag(rle->res, &at91_bs_tag); - rman_set_bushandle(rle->res, start); + if (rle->res != NULL) { + rman_set_bustag(rle->res, &at91_bs_tag); + rman_set_bushandle(rle->res, start); + } break; } if (rle->res) { Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/AVILA ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/AVILA Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/AVILA Tue Oct 28 06:26:08 2008 (r184395) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident AVILA options PHYSADDR=0x10000000 @@ -80,7 +79,6 @@ options BOOTP_COMPAT #options PREEMPTION #options VERBOSE_SYSINIT -device mem # Memory and kernel memory devices #device saarm device pci Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/BWCT ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/BWCT Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/BWCT Tue Oct 28 06:26:08 2008 (r184395) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident BWCT options VERBOSE_INIT_ARM @@ -85,7 +84,6 @@ device rlswitch #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed #options DIAGNOSTIC -device mem # Memory and kernel memory devices device md device at91_twi # TWI: Two Wire Interface device at91_spi # SPI: Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/CRB ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/CRB Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/CRB Tue Oct 28 06:26:08 2008 (r184395) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident CRB options PHYSADDR=0x00000000 @@ -67,7 +66,6 @@ options BOOTP_COMPAT #options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices #device saarm device miibus device rl Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-78XXX ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-78XXX Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-78XXX Tue Oct 28 06:26:08 2008 (r184395) @@ -4,7 +4,6 @@ # $FreeBSD$ # -machine arm ident DB-88F78XX include "../mv/discovery/std.db78xxx" @@ -49,7 +48,6 @@ options WITNESS_SKIPSPIN #Don't run wit # Pseudo devices device loop -device mem device md device pty device random Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F5XXX ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F5XXX Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F5XXX Tue Oct 28 06:26:08 2008 (r184395) @@ -4,7 +4,6 @@ # $FreeBSD$ # -machine arm ident DB-88F5XXX include "../mv/orion/std.db88f5xxx" @@ -48,7 +47,6 @@ options WITNESS_SKIPSPIN #Don't run wit #options WITNESS_KDB # Pseudo devices -device mem device md device loop device pty Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F6XXX ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F6XXX Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/DB-88F6XXX Tue Oct 28 06:26:08 2008 (r184395) @@ -4,7 +4,6 @@ # $FreeBSD$ # -machine arm ident DB-88F6XXX include "../mv/kirkwood/std.db88f6xxx" @@ -49,7 +48,6 @@ options WITNESS_SKIPSPIN #Don't run wit # Pseudo devices device loop -device mem device md device pty device random Added: user/kmacy/HEAD_fast_xmit/sys/arm/conf/DEFAULTS ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/DEFAULTS Tue Oct 28 06:26:08 2008 (r184395) @@ -0,0 +1,11 @@ +# +# DEFAULTS -- Default kernel configuration file for FreeBSD/arm +# +# $FreeBSD$ + +machine arm + +device mem + +options GEOM_BSD +options GEOM_MBR Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/EP80219 ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/EP80219 Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/EP80219 Tue Oct 28 06:26:08 2008 (r184395) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident EP80219 options PHYSADDR=0xa0000000 @@ -69,7 +68,6 @@ options BOOTP_COMPAT #options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices #device saarm device miibus device fxp Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/GUMSTIX ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/GUMSTIX Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/GUMSTIX Tue Oct 28 06:26:08 2008 (r184395) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident GUMSTIX cpu CPU_XSCALE_PXA2X0 @@ -71,7 +70,6 @@ options BOOTP_BLOCKSIZE=4096 options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices device mii device smc device smcphy Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/HL200 ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/HL200 Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/HL200 Tue Oct 28 06:26:08 2008 (r184395) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident HL200 include "../at91/std.at91" @@ -89,7 +88,6 @@ device lxtphy #options WITNESS #Enable checks to detect deadlocks and cycles #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed -device mem # Memory and kernel memory devices device md device at91_twi # TWI: Two Wire Interface device at91_spi # SPI: Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/IQ31244 ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/IQ31244 Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/IQ31244 Tue Oct 28 06:26:08 2008 (r184395) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident IQ31244 options PHYSADDR=0xa0000000 @@ -66,7 +65,6 @@ options BOOTP_COMPAT #options PREEMPTION device loop device ether -device mem # Memory and kernel memory devices #device saarm device miibus device rl Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/KB920X ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/KB920X Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/KB920X Tue Oct 28 06:26:08 2008 (r184395) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident KB920X include "../at91/std.kb920x" @@ -80,7 +79,6 @@ device lxtphy #options WITNESS #Enable checks to detect deadlocks and cycles #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed -device mem # Memory and kernel memory devices device md device at91_twi # TWI: Two Wire Interface device at91_spi # SPI: Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/NSLU ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/NSLU Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/NSLU Tue Oct 28 06:26:08 2008 (r184395) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident NSLU options PHYSADDR=0x10000000 @@ -76,7 +75,6 @@ options BOOTP_NFSV3 options BOOTP_WIRED_TO=npe0 options BOOTP_COMPAT -device mem # Memory and kernel memory devices device pci device uart Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/SIMICS ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/SIMICS Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/SIMICS Tue Oct 28 06:26:08 2008 (r184395) @@ -17,7 +17,6 @@ # # $FreeBSD$ -machine arm ident SIMICS options KERNPHYSADDR=0xc0000000 @@ -68,5 +67,4 @@ device uart #options WITNESS #Enable checks to detect deadlocks and cycles #options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed -device mem # Memory and kernel memory devices device md Modified: user/kmacy/HEAD_fast_xmit/sys/arm/conf/SKYEYE ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/arm/conf/SKYEYE Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/arm/conf/SKYEYE Tue Oct 28 06:26:08 2008 (r184395) @@ -18,7 +18,6 @@ # # $FreeBSD$ -machine arm ident KB920X options KERNPHYSADDR=0xc0000000 @@ -79,7 +78,6 @@ device uart #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O -device mem # Memory and kernel memory devices device md options SKYEYE_WORKAROUNDS # Floppy drives Modified: user/kmacy/HEAD_fast_xmit/sys/cam/scsi/scsi_target.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/cam/scsi/scsi_target.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/cam/scsi/scsi_target.c Tue Oct 28 06:26:08 2008 (r184395) @@ -183,7 +183,7 @@ targopen(struct cdev *dev, int flags, in make_dev(&targ_cdevsw, dev2unit(dev), UID_ROOT, GID_WHEEL, 0600, "targ%d", dev2unit(dev)); } - MALLOC(softc, struct targ_softc *, sizeof(*softc), M_TARG, + softc = malloc(sizeof(*softc), M_TARG, M_WAITOK | M_ZERO); dev->si_drv1 = softc; softc->state = TARG_STATE_OPENED; @@ -211,7 +211,7 @@ targclose(struct cdev *dev, int flag, in if ((softc->periph == NULL) || (softc->state & TARG_STATE_LUN_ENABLED) == 0) { destroy_dev(dev); - FREE(softc, M_TARG); + free(softc, M_TARG); return (0); } @@ -230,7 +230,7 @@ targclose(struct cdev *dev, int flag, in softc->periph = NULL; } destroy_dev(dev); - FREE(softc, M_TARG); + free(softc, M_TARG); } cam_periph_unlock(periph); cam_periph_release(periph); @@ -531,7 +531,7 @@ targdtor(struct cam_periph *periph) } while ((descr = TAILQ_FIRST(&softc->abort_queue)) != NULL) { TAILQ_REMOVE(&softc->abort_queue, descr, tqe); - FREE(descr, M_TARG); + free(descr, M_TARG); } softc->periph = NULL; @@ -966,7 +966,7 @@ targgetccb(struct targ_softc *softc, xpt int ccb_len; ccb_len = targccblen(type); - MALLOC(ccb, union ccb *, ccb_len, M_TARG, M_WAITOK); + ccb = malloc(ccb_len, M_TARG, M_WAITOK); CAM_DEBUG(softc->path, CAM_DEBUG_PERIPH, ("getccb %p\n", ccb)); xpt_setup_ccb(&ccb->ccb_h, softc->path, priority); @@ -981,13 +981,13 @@ targfreeccb(struct targ_softc *softc, un { CAM_DEBUG_PRINT(CAM_DEBUG_PERIPH, ("targfreeccb descr %p and\n", ccb->ccb_h.targ_descr)); - FREE(ccb->ccb_h.targ_descr, M_TARG); + free(ccb->ccb_h.targ_descr, M_TARG); switch (ccb->ccb_h.func_code) { case XPT_ACCEPT_TARGET_IO: case XPT_IMMED_NOTIFY: CAM_DEBUG_PRINT(CAM_DEBUG_PERIPH, ("freeing ccb %p\n", ccb)); - FREE(ccb, M_TARG); + free(ccb, M_TARG); break; default: /* Send back CCB if we got it from the periph */ @@ -998,7 +998,7 @@ targfreeccb(struct targ_softc *softc, un } else { CAM_DEBUG_PRINT(CAM_DEBUG_PERIPH, ("freeing ccb %p\n", ccb)); - FREE(ccb, M_TARG); + free(ccb, M_TARG); } break; } @@ -1009,7 +1009,7 @@ targgetdescr(struct targ_softc *softc) { struct targ_cmd_descr *descr; - MALLOC(descr, struct targ_cmd_descr *, sizeof(*descr), M_TARG, + descr = malloc(sizeof(*descr), M_TARG, M_WAITOK); descr->mapinfo.num_bufs_used = 0; return (descr); Modified: user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_misc.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_misc.c Tue Oct 28 06:26:08 2008 (r184395) @@ -1762,6 +1762,24 @@ freebsd32_ftruncate(struct thread *td, s return (ftruncate(td, &ap)); } +int +freebsd32_getdirentries(struct thread *td, + struct freebsd32_getdirentries_args *uap) +{ + long base; + int32_t base32; + int error; + + error = kern_getdirentries(td, uap->fd, uap->buf, uap->count, &base); + if (error) + return (error); + if (uap->basep != NULL) { + base32 = base; + error = copyout(&base32, uap->basep, sizeof(int32_t)); + } + return (error); +} + #ifdef COMPAT_FREEBSD6 /* versions with the 'int pad' argument */ int Modified: user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_proto.h Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_proto.h Tue Oct 28 06:26:08 2008 (r184395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ #ifndef _FREEBSD32_SYSPROTO_H_ @@ -152,6 +152,12 @@ struct freebsd32_lstat_args { char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; char ub_l_[PADL_(struct stat32 *)]; struct stat32 * ub; char ub_r_[PADR_(struct stat32 *)]; }; +struct freebsd32_getdirentries_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char count_l_[PADL_(u_int)]; u_int count; char count_r_[PADR_(u_int)]; + char basep_l_[PADL_(int32_t *)]; int32_t * basep; char basep_r_[PADR_(int32_t *)]; +}; struct freebsd32_sysctl_args { char name_l_[PADL_(int *)]; int * name; char name_r_[PADR_(int *)]; char namelen_l_[PADL_(u_int)]; u_int namelen; char namelen_r_[PADR_(u_int)]; @@ -406,6 +412,7 @@ int freebsd32_shmsys(struct thread *, st int freebsd32_stat(struct thread *, struct freebsd32_stat_args *); int freebsd32_fstat(struct thread *, struct freebsd32_fstat_args *); int freebsd32_lstat(struct thread *, struct freebsd32_lstat_args *); +int freebsd32_getdirentries(struct thread *, struct freebsd32_getdirentries_args *); int freebsd32_sysctl(struct thread *, struct freebsd32_sysctl_args *); int freebsd32_futimes(struct thread *, struct freebsd32_futimes_args *); int freebsd32_semctl(struct thread *, struct freebsd32_semctl_args *); @@ -618,6 +625,7 @@ int freebsd6_freebsd32_ftruncate(struct #define FREEBSD32_SYS_AUE_freebsd32_stat AUE_STAT #define FREEBSD32_SYS_AUE_freebsd32_fstat AUE_FSTAT #define FREEBSD32_SYS_AUE_freebsd32_lstat AUE_LSTAT +#define FREEBSD32_SYS_AUE_freebsd32_getdirentries AUE_GETDIRENTRIES #define FREEBSD32_SYS_AUE_freebsd32_sysctl AUE_SYSCTL #define FREEBSD32_SYS_AUE_freebsd32_futimes AUE_FUTIMES #define FREEBSD32_SYS_AUE_freebsd32_semctl AUE_SEMCTL Modified: user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscall.h Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscall.h Tue Oct 28 06:26:08 2008 (r184395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ #define FREEBSD32_SYS_syscall 0 @@ -177,7 +177,7 @@ #define FREEBSD32_SYS_fpathconf 192 #define FREEBSD32_SYS_getrlimit 194 #define FREEBSD32_SYS_setrlimit 195 -#define FREEBSD32_SYS_getdirentries 196 +#define FREEBSD32_SYS_freebsd32_getdirentries 196 #define FREEBSD32_SYS_freebsd6_freebsd32_mmap 197 #define FREEBSD32_SYS___syscall 198 #define FREEBSD32_SYS_freebsd6_freebsd32_lseek 199 Modified: user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscalls.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_syscalls.c Tue Oct 28 06:26:08 2008 (r184395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ const char *freebsd32_syscallnames[] = { @@ -203,7 +203,7 @@ const char *freebsd32_syscallnames[] = { "#193", /* 193 = nosys */ "getrlimit", /* 194 = getrlimit */ "setrlimit", /* 195 = setrlimit */ - "getdirentries", /* 196 = getdirentries */ + "freebsd32_getdirentries", /* 196 = freebsd32_getdirentries */ "compat6.freebsd32_mmap", /* 197 = old freebsd32_mmap */ "__syscall", /* 198 = __syscall */ "compat6.freebsd32_lseek", /* 199 = old freebsd32_lseek */ Modified: user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_sysent.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/freebsd32_sysent.c Tue Oct 28 06:26:08 2008 (r184395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 183361 2008-09-25 20:07:42Z jhb + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 184183 2008-10-22 21:55:48Z jhb */ #include "opt_compat.h" @@ -234,7 +234,7 @@ struct sysent freebsd32_sysent[] = { { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 193 = nosys */ { AS(__getrlimit_args), (sy_call_t *)getrlimit, AUE_GETRLIMIT, NULL, 0, 0 }, /* 194 = getrlimit */ { AS(__setrlimit_args), (sy_call_t *)setrlimit, AUE_SETRLIMIT, NULL, 0, 0 }, /* 195 = setrlimit */ - { AS(getdirentries_args), (sy_call_t *)getdirentries, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 196 = getdirentries */ + { AS(freebsd32_getdirentries_args), (sy_call_t *)freebsd32_getdirentries, AUE_GETDIRENTRIES, NULL, 0, 0 }, /* 196 = freebsd32_getdirentries */ { compat6(AS(freebsd6_freebsd32_mmap_args),freebsd32_mmap), AUE_MMAP, NULL, 0, 0 }, /* 197 = old freebsd32_mmap */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 198 = __syscall */ { compat6(AS(freebsd6_freebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0 }, /* 199 = old freebsd32_lseek */ Modified: user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/syscalls.master ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/syscalls.master Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/freebsd32/syscalls.master Tue Oct 28 06:26:08 2008 (r184395) @@ -350,8 +350,8 @@ 195 AUE_SETRLIMIT NOPROTO { int setrlimit(u_int which, \ struct rlimit *rlp); } setrlimit \ __setrlimit_args int -196 AUE_GETDIRENTRIES NOPROTO { int getdirentries(int fd, char *buf, \ - u_int count, long *basep); } +196 AUE_GETDIRENTRIES STD { int freebsd32_getdirentries(int fd, \ + char *buf, u_int count, int32_t *basep); } 197 AUE_MMAP COMPAT6 { caddr_t freebsd32_mmap(caddr_t addr, \ size_t len, int prot, int flags, int fd, \ int pad, u_int32_t poslo, \ Modified: user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_ioctl.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_ioctl.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_ioctl.c Tue Oct 28 06:26:08 2008 (r184395) @@ -2673,7 +2673,7 @@ linux_ioctl_register_handler(struct linu break; } if (he == NULL) { - MALLOC(he, struct handler_element *, sizeof(*he), + he = malloc(sizeof(*he), M_LINUX, M_WAITOK); he->func = h->func; } else @@ -2711,7 +2711,7 @@ linux_ioctl_unregister_handler(struct li if (he->func == h->func) { TAILQ_REMOVE(&handlers, he, list); sx_xunlock(&linux_ioctl_sx); - FREE(he, M_LINUX); + free(he, M_LINUX); return (0); } } Modified: user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_signal.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_signal.c Tue Oct 28 06:25:00 2008 (r184394) +++ user/kmacy/HEAD_fast_xmit/sys/compat/linux/linux_signal.c Tue Oct 28 06:26:08 2008 (r184395) @@ -39,6 +39,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include + #include "opt_compat.h" #ifdef COMPAT_LINUX32 @@ -535,45 +537,75 @@ linux_kill(struct thread *td, struct lin return (kill(td, &tmp)); } -int -linux_tgkill(struct thread *td, struct linux_tgkill_args *args) +static int +linux_do_tkill(struct thread *td, l_int tgid, l_int pid, l_int signum) { - struct linux_emuldata *em; - struct linux_kill_args ka; + struct proc *proc = td->td_proc; + struct linux_emuldata *em; struct proc *p; + ksiginfo_t ksi; + int error; -#ifdef DEBUG - if (ldebug(tgkill)) - printf(ARGS(tgkill, "%d, %d, %d"), args->tgid, args->pid, args->sig); -#endif - - ka.pid = args->pid; - ka.signum = args->sig; + AUDIT_ARG(signum, signum); + AUDIT_ARG(pid, pid); - if (args->tgid == -1) - return linux_kill(td, &ka); + /* + * Allow signal 0 as a means to check for privileges + */ + if (!LINUX_SIG_VALID(signum) && signum != 0) + return (EINVAL); - if ((p = pfind(args->pid)) == NULL) - return ESRCH; + if (signum > 0 && signum <= LINUX_SIGTBLSZ) + signum = linux_to_bsd_signal[_SIG_IDX(signum)]; - if (p->p_sysent != &elf_linux_sysvec) - return ESRCH; + if ((p = pfind(pid)) == NULL) { + if ((p = zpfind(pid)) == NULL) + return (ESRCH); + } - PROC_UNLOCK(p); + AUDIT_ARG(process, p); + error = p_cansignal(td, p, signum); + if (error) + goto out; + error = ESRCH; em = em_find(p, EMUL_DONTLOCK); if (em == NULL) { #ifdef DEBUG - printf("emuldata not found in tgkill.\n"); + printf("emuldata not found in do_tkill.\n"); #endif - return ESRCH; + goto out; } + if (tgid > 0 && em->shared->group_pid != tgid) + goto out; + + ksiginfo_init(&ksi); + ksi.ksi_signo = signum; + ksi.ksi_code = LINUX_SI_TKILL; + ksi.ksi_errno = 0; + ksi.ksi_pid = proc->p_pid; + ksi.ksi_uid = proc->p_ucred->cr_ruid; - if (em->shared->group_pid != args->tgid) - return ESRCH; + error = tdsignal(p, NULL, ksi.ksi_signo, &ksi); - return linux_kill(td, &ka); +out: + PROC_UNLOCK(p); + return (error); +} + +int +linux_tgkill(struct thread *td, struct linux_tgkill_args *args) +{ + +#ifdef DEBUG + if (ldebug(tgkill)) + printf(ARGS(tgkill, "%d, %d, %d"), args->tgid, args->pid, args->sig); +#endif + if (args->pid <= 0 || args->tgid <=0) + return (EINVAL); + + return (linux_do_tkill(td, args->tgid, args->pid, args->sig)); } int @@ -583,6 +615,39 @@ linux_tkill(struct thread *td, struct li if (ldebug(tkill)) printf(ARGS(tkill, "%i, %i"), args->tid, args->sig); #endif + if (args->tid <= 0) + return (EINVAL); + + return (linux_do_tkill(td, 0, args->tid, args->sig)); +} + +void +ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 06:27:17 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ACCAC1065672; Tue, 28 Oct 2008 06:27:17 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 981F68FC1A; Tue, 28 Oct 2008 06:27:17 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S6RHpC085102; Tue, 28 Oct 2008 06:27:17 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S6RGs4085075; Tue, 28 Oct 2008 06:27:16 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280627.m9S6RGs4085075@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 06:27:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184396 - in user/kmacy/HEAD_fast_xmit: bin/cp contrib/tcsh crypto/openssh etc etc/periodic/security lib/libarchive lib/libarchive/test lib/libc/gen lib/libc/string lib/libc/sys lib/lib... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 06:27:17 -0000 Author: kmacy Date: Tue Oct 28 06:27:16 2008 New Revision: 184396 URL: http://svn.freebsd.org/changeset/base/184396 Log: IF_HEAD_ECMP part3 184390:184393 Added: user/kmacy/HEAD_fast_xmit/share/man/man4/sdhci.4 Modified: user/kmacy/HEAD_fast_xmit/bin/cp/utils.c user/kmacy/HEAD_fast_xmit/contrib/tcsh/sh.c user/kmacy/HEAD_fast_xmit/contrib/tcsh/tc.const.c user/kmacy/HEAD_fast_xmit/crypto/openssh/loginrec.c user/kmacy/HEAD_fast_xmit/crypto/openssh/sshd.c user/kmacy/HEAD_fast_xmit/etc/Makefile user/kmacy/HEAD_fast_xmit/etc/devd.conf user/kmacy/HEAD_fast_xmit/etc/periodic/security/200.chkmounts user/kmacy/HEAD_fast_xmit/etc/rc.subr user/kmacy/HEAD_fast_xmit/etc/remote user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_read_support_format_zip.c user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_util.c user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.c user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.zip.uu user/kmacy/HEAD_fast_xmit/lib/libc/gen/__xuname.c user/kmacy/HEAD_fast_xmit/lib/libc/gen/posix_spawn.c user/kmacy/HEAD_fast_xmit/lib/libc/string/strlcpy.c user/kmacy/HEAD_fast_xmit/lib/libc/string/strxfrm.c user/kmacy/HEAD_fast_xmit/lib/libc/sys/mmap.2 user/kmacy/HEAD_fast_xmit/lib/libcam/camlib.c user/kmacy/HEAD_fast_xmit/lib/libfetch/http.c user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.3 user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.c user/kmacy/HEAD_fast_xmit/lib/libutil/login_cap.h user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.3 user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.c user/kmacy/HEAD_fast_xmit/lib/libutil/login_times.3 user/kmacy/HEAD_fast_xmit/lib/libutil/login_times.c user/kmacy/HEAD_fast_xmit/lib/libutil/pidfile.3 user/kmacy/HEAD_fast_xmit/lib/libutil/pidfile.c user/kmacy/HEAD_fast_xmit/lib/libutil/pty.c user/kmacy/HEAD_fast_xmit/release/Makefile user/kmacy/HEAD_fast_xmit/release/doc/en_US.ISO8859-1/hardware/article.sgml user/kmacy/HEAD_fast_xmit/sbin/geom/class/part/geom_part.c user/kmacy/HEAD_fast_xmit/sbin/ifconfig/ifconfig.8 user/kmacy/HEAD_fast_xmit/share/man/man4/mmc.4 user/kmacy/HEAD_fast_xmit/share/man/man4/mmcsd.4 user/kmacy/HEAD_fast_xmit/share/man/man4/snd_hda.4 user/kmacy/HEAD_fast_xmit/share/man/man4/u3g.4 user/kmacy/HEAD_fast_xmit/share/man/man4/umodem.4 user/kmacy/HEAD_fast_xmit/share/man/man9/Makefile user/kmacy/HEAD_fast_xmit/share/man/man9/malloc.9 user/kmacy/HEAD_fast_xmit/share/man/man9/vinvalbuf.9 user/kmacy/HEAD_fast_xmit/tools/regression/lib/libutil/test-flopen.c user/kmacy/HEAD_fast_xmit/tools/tools/ath/athdebug/athdebug.c user/kmacy/HEAD_fast_xmit/tools/tools/ath/athstats/Makefile user/kmacy/HEAD_fast_xmit/tools/tools/ath/athstats/athstats.c user/kmacy/HEAD_fast_xmit/tools/tools/ath/athstats/main.c user/kmacy/HEAD_fast_xmit/tools/tools/nanobsd/nanobsd.sh user/kmacy/HEAD_fast_xmit/usr.sbin/Makefile user/kmacy/HEAD_fast_xmit/usr.sbin/nscd/agents/group.c user/kmacy/HEAD_fast_xmit/usr.sbin/nscd/agents/passwd.c user/kmacy/HEAD_fast_xmit/usr.sbin/nscd/agents/services.c user/kmacy/HEAD_fast_xmit/usr.sbin/nscd/cachelib.c user/kmacy/HEAD_fast_xmit/usr.sbin/nscd/nscd.c user/kmacy/HEAD_fast_xmit/usr.sbin/nscd/nscdcli.c user/kmacy/HEAD_fast_xmit/usr.sbin/pciconf/pciconf.c user/kmacy/HEAD_fast_xmit/usr.sbin/sysinstall/package.c Modified: user/kmacy/HEAD_fast_xmit/bin/cp/utils.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/bin/cp/utils.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/bin/cp/utils.c Tue Oct 28 06:27:16 2008 (r184396) @@ -137,41 +137,39 @@ copy_file(const FTSENT *entp, int dne) * Mmap and write if less than 8M (the limit is so we don't totally * trash memory on big files. This is really a minor hack, but it * wins some CPU back. + * Some filesystems, such as smbnetfs, don't support mmap, + * so this is a best-effort attempt. */ #ifdef VM_AND_BUFFER_CACHE_SYNCHRONIZED if (S_ISREG(fs->st_mode) && fs->st_size > 0 && - fs->st_size <= 8 * 1048576) { - if ((p = mmap(NULL, (size_t)fs->st_size, PROT_READ, - MAP_SHARED, from_fd, (off_t)0)) == MAP_FAILED) { + fs->st_size <= 8 * 1024 * 1024 && + (p = mmap(NULL, (size_t)fs->st_size, PROT_READ, + MAP_SHARED, from_fd, (off_t)0)) != MAP_FAILED) { + wtotal = 0; + for (bufp = p, wresid = fs->st_size; ; + bufp += wcount, wresid -= (size_t)wcount) { + wcount = write(to_fd, bufp, wresid); + if (wcount <= 0) + break; + wtotal += wcount; + if (info) { + info = 0; + (void)fprintf(stderr, + "%s -> %s %3d%%\n", + entp->fts_path, to.p_path, + cp_pct(wtotal, fs->st_size)); + } + if (wcount >= (ssize_t)wresid) + break; + } + if (wcount != (ssize_t)wresid) { + warn("%s", to.p_path); + rval = 1; + } + /* Some systems don't unmap on close(2). */ + if (munmap(p, fs->st_size) < 0) { warn("%s", entp->fts_path); rval = 1; - } else { - wtotal = 0; - for (bufp = p, wresid = fs->st_size; ; - bufp += wcount, wresid -= (size_t)wcount) { - wcount = write(to_fd, bufp, wresid); - if (wcount <= 0) - break; - wtotal += wcount; - if (info) { - info = 0; - (void)fprintf(stderr, - "%s -> %s %3d%%\n", - entp->fts_path, to.p_path, - cp_pct(wtotal, fs->st_size)); - } - if (wcount >= (ssize_t)wresid) - break; - } - if (wcount != (ssize_t)wresid) { - warn("%s", to.p_path); - rval = 1; - } - /* Some systems don't unmap on close(2). */ - if (munmap(p, fs->st_size) < 0) { - warn("%s", entp->fts_path); - rval = 1; - } } } else #endif Modified: user/kmacy/HEAD_fast_xmit/contrib/tcsh/sh.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/contrib/tcsh/sh.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/contrib/tcsh/sh.c Tue Oct 28 06:27:16 2008 (r184396) @@ -462,7 +462,7 @@ main(int argc, char **argv) else cp2 = cp; if (!(((Strncmp(cp2, STRtty, 3) == 0) && Isalpha(cp2[3])) || - Strstr(cp, STRslptssl) != NULL)) { + Strstr(cp, STRptssl) != NULL)) { if (getenv("DISPLAY") == NULL) { /* NOT on X window shells */ setcopy(STRautologout, STRdefautologout, VAR_READWRITE); Modified: user/kmacy/HEAD_fast_xmit/contrib/tcsh/tc.const.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/contrib/tcsh/tc.const.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/contrib/tcsh/tc.const.c Tue Oct 28 06:27:16 2008 (r184396) @@ -46,7 +46,7 @@ Char STRautomatic[] = { 'a', 'u', 't', ' Char STRhangup[] = { 'h', 'a', 'n', 'g', 'u', 'p', '\0' }; Char STRaout[] = { 'a', '.', 'o', 'u', 't', '\0' }; Char STRtty[] = { 't', 't', 'y', '\0' }; -Char STRslptssl[] = { '/', 'p', 't', 's', '/', '\0' }; +Char STRptssl[] = { 'p', 't', 's', '/', '\0' }; Char STRany[] = { 'a', 'n', 'y', '\0' }; Char STRstatus[] = { 's', 't', 'a', 't', 'u', 's', '\0' }; Char STR0[] = { '0', '\0' }; Modified: user/kmacy/HEAD_fast_xmit/crypto/openssh/loginrec.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/crypto/openssh/loginrec.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/crypto/openssh/loginrec.c Tue Oct 28 06:27:16 2008 (r184396) @@ -146,7 +146,6 @@ */ #include "includes.h" -__RCSID("$FreeBSD$"); #include #include @@ -689,8 +688,8 @@ construct_utmp(struct logininfo *li, strncpy(ut->ut_name, li->username, MIN_SIZEOF(ut->ut_name, li->username)); # ifdef HAVE_HOST_IN_UTMP - realhostname_sa(ut->ut_host, sizeof ut->ut_host, - &li->hostaddr.sa, li->hostaddr.sa.sa_len); + strncpy(ut->ut_host, li->hostname, + MIN_SIZEOF(ut->ut_host, li->hostname)); # endif # ifdef HAVE_ADDR_IN_UTMP /* this is just a 32-bit IP address */ Modified: user/kmacy/HEAD_fast_xmit/crypto/openssh/sshd.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/crypto/openssh/sshd.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/crypto/openssh/sshd.c Tue Oct 28 06:27:16 2008 (r184396) @@ -72,6 +72,7 @@ __RCSID("$FreeBSD$"); #include #include #include +#include #include #include @@ -238,7 +239,7 @@ u_char *session_id2 = NULL; u_int session_id2_len = 0; /* record remote hostname or ip */ -u_int utmp_len = MAXHOSTNAMELEN; +u_int utmp_len = UT_HOSTSIZE; /* options.max_startup sized array of fd ints */ int *startup_pipes = NULL; Modified: user/kmacy/HEAD_fast_xmit/etc/Makefile ============================================================================== --- user/kmacy/HEAD_fast_xmit/etc/Makefile Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/etc/Makefile Tue Oct 28 06:27:16 2008 (r184396) @@ -8,7 +8,7 @@ SUBDIR= sendmail .endif BIN1= auth.conf \ - crontab csh.cshrc csh.login csh.logout devd.conf devfs.conf \ + crontab devd.conf devfs.conf \ ddb.conf dhclient.conf disktab fbtab \ ftpusers gettytab group \ hosts hosts.allow hosts.equiv \ @@ -84,6 +84,10 @@ BIN1+= portsnap.conf BIN1+= pf.os .endif +.if ${MK_TCSH} != "no" +BIN1+= csh.cshrc csh.login csh.logout +.endif + .if ${MK_WIRELESS} != "no" BIN1+= regdomain.xml .endif @@ -148,9 +152,12 @@ distribution: ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 755 \ ${BIN2} ${DESTDIR}/etc; \ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 600 \ - master.passwd nsmb.conf opieaccess ${DESTDIR}/etc; \ - pwd_mkdb ${PWD_MKDB_ENDIAN} -i -p -d ${DESTDIR}/etc \ - ${DESTDIR}/etc/master.passwd + master.passwd nsmb.conf opieaccess ${DESTDIR}/etc; +.if ${MK_TCSH} == "no" + sed -i "" -e 's;/bin/csh;;' ${DESTDIR}/etc/master.passwd +.endif + pwd_mkdb ${PWD_MKDB_ENDIAN} -i -p -d ${DESTDIR}/etc \ + ${DESTDIR}/etc/master.passwd .if ${MK_BLUETOOTH} != "no" ${_+_}cd ${.CURDIR}/bluetooth; ${MAKE} install .endif @@ -195,14 +202,18 @@ distribution: .endif cd ${.CURDIR}/root; \ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ + dot.profile ${DESTDIR}/root/.profile; \ + rm -f ${DESTDIR}/.profile; \ + ln ${DESTDIR}/root/.profile ${DESTDIR}/.profile +.if ${MK_TCSH} != "no" + cd ${.CURDIR}/root; \ + ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ dot.cshrc ${DESTDIR}/root/.cshrc; \ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ dot.login ${DESTDIR}/root/.login; \ - ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ - dot.profile ${DESTDIR}/root/.profile; \ - rm -f ${DESTDIR}/.cshrc ${DESTDIR}/.profile; \ - ln ${DESTDIR}/root/.cshrc ${DESTDIR}/.cshrc; \ - ln ${DESTDIR}/root/.profile ${DESTDIR}/.profile + rm -f ${DESTDIR}/.cshrc; \ + ln ${DESTDIR}/root/.cshrc ${DESTDIR}/.cshrc +.endif cd ${.CURDIR}/mtree; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 \ ${MTREE} ${DESTDIR}/etc/mtree .if ${MK_PPP} != "no" Modified: user/kmacy/HEAD_fast_xmit/etc/devd.conf ============================================================================== --- user/kmacy/HEAD_fast_xmit/etc/devd.conf Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/etc/devd.conf Tue Oct 28 06:27:16 2008 (r184396) @@ -256,6 +256,7 @@ notify 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 { match "system" "ACPI"; match "subsystem" "ASUS-Eee"; Modified: user/kmacy/HEAD_fast_xmit/etc/periodic/security/200.chkmounts ============================================================================== --- user/kmacy/HEAD_fast_xmit/etc/periodic/security/200.chkmounts Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/etc/periodic/security/200.chkmounts Tue Oct 28 06:27:16 2008 (r184396) @@ -50,7 +50,7 @@ case "$daily_status_security_chkmounts_e ignore="${ignore}|^amd:" esac [ -n "$ignore" ] && cmd="egrep -v ${ignore#|}" || cmd=cat - mount -p | ${cmd} | + mount -p | sort | ${cmd} | check_diff mount - "${host} changes in mounted filesystems:" rc=$?;; *) rc=0;; Modified: user/kmacy/HEAD_fast_xmit/etc/rc.subr ============================================================================== --- user/kmacy/HEAD_fast_xmit/etc/rc.subr Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/etc/rc.subr Tue Oct 28 06:27:16 2008 (r184396) @@ -913,6 +913,7 @@ run_rc_script() else ( trap "echo Script $_file interrupted; kill -QUIT $$" 3 trap "echo Script $_file interrupted; exit 1" 2 + trap "echo Script $_file running" 29 set $_arg; . $_file ) fi fi Modified: user/kmacy/HEAD_fast_xmit/etc/remote ============================================================================== --- user/kmacy/HEAD_fast_xmit/etc/remote Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/etc/remote Tue Oct 28 06:27:16 2008 (r184396) @@ -66,3 +66,11 @@ uart4|com5:dv=/dev/cuau4:br#9600:pa=none uart5|com6:dv=/dev/cuau5:br#9600:pa=none: uart6|com7:dv=/dev/cuau6:br#9600:pa=none: uart7|com8:dv=/dev/cuau7:br#9600:pa=none: +ucom1:dv=/dev/cuaU0:br#9600:pa=none: +ucom2:dv=/dev/cuaU1:br#9600:pa=none: +ucom3:dv=/dev/cuaU2:br#9600:pa=none: +ucom4:dv=/dev/cuaU3:br#9600:pa=none: +ucom5:dv=/dev/cuaU4:br#9600:pa=none: +ucom6:dv=/dev/cuaU5:br#9600:pa=none: +ucom7:dv=/dev/cuaU6:br#9600:pa=none: +ucom8:dv=/dev/cuaU7:br#9600:pa=none: Modified: user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_read_support_format_zip.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_read_support_format_zip.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_read_support_format_zip.c Tue Oct 28 06:27:16 2008 (r184396) @@ -444,7 +444,9 @@ zip_read_file_header(struct archive_read archive_entry_set_mtime(entry, zip->mtime, 0); archive_entry_set_ctime(entry, zip->ctime, 0); archive_entry_set_atime(entry, zip->atime, 0); - archive_entry_set_size(entry, zip->uncompressed_size); + /* Set the size only if it's meaningful. */ + if (0 == (zip->flags & ZIP_LENGTH_AT_END)) + archive_entry_set_size(entry, zip->uncompressed_size); zip->entry_bytes_remaining = zip->compressed_size; zip->entry_offset = 0; @@ -573,12 +575,16 @@ archive_read_format_zip_read_data(struct } break; } + if (r != ARCHIVE_OK) + return (r); /* Update checksum */ - if (r == ARCHIVE_OK && *size) { + if (*size) zip->entry_crc32 = crc32(zip->entry_crc32, *buff, *size); - } - return (r); + /* Return EOF immediately if this is a non-regular file. */ + if (AE_IFREG != (zip->mode & AE_IFMT)) + return (ARCHIVE_EOF); + return (ARCHIVE_OK); } /* Modified: user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_util.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_util.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libarchive/archive_util.c Tue Oct 28 06:27:16 2008 (r184396) @@ -168,6 +168,7 @@ archive_set_error(struct archive *a, int va_start(ap, fmt); archive_string_vsprintf(&(a->error_string), fmt, ap); + va_end(ap); if (error_number > 0) { archive_strcat(&(a->error_string), ": "); #ifdef HAVE_STRERROR_R @@ -184,7 +185,6 @@ archive_set_error(struct archive *a, int archive_strcat(&(a->error_string), errp); } a->error = a->error_string.s; - va_end(ap); } void Modified: user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.c Tue Oct 28 06:27:16 2008 (r184396) @@ -25,6 +25,12 @@ #include "test.h" __FBSDID("$FreeBSD$"); +/* + * The reference file for this has been manually tweaked so that: + * * file2 has length-at-end but file1 does not + * * file2 has an invalid CRC + */ + DEFINE_TEST(test_read_format_zip) { const char *refname = "test_read_format_zip.zip"; @@ -57,7 +63,8 @@ DEFINE_TEST(test_read_format_zip) assertA(0 == archive_read_next_header(a, &ae)); assertEqualString("file2", archive_entry_pathname(ae)); assertEqualInt(1179605932, archive_entry_mtime(ae)); - assertEqualInt(18, archive_entry_size(ae)); + failure("file2 has length-at-end, so we shouldn't see a valid size"); + assertEqualInt(0, archive_entry_size_is_set(ae)); failure("file2 has a bad CRC, so reading to end should fail"); assertEqualInt(ARCHIVE_WARN, archive_read_data(a, buff, 19)); assert(0 == memcmp(buff, "hello\nhello\nhello\n", 18)); Modified: user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.zip.uu ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.zip.uu Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libarchive/test/test_read_format_zip.zip.uu Tue Oct 28 06:27:16 2008 (r184396) @@ -1,13 +1,14 @@ $FreeBSD$ begin 644 test_read_format_zip.zip -M4$L#!`H``````%EFLS8````````````````$`!4`9&ER+U54"0`#&55/1AE5 -M3T95>`0`Z`/H`U!+`P04````"`!O9K,V.C=F/0H````2````!0`5`&9I;&4Q -M550)``-!54]&K%M/1E5X!`#H`^@#RTC-R%8T$@H````2````!0`5`&9I;&4R550)``.L6T]&K%M/1E5X!`#H`^@#RTC- -MR%8T$@H````2````!0`-```````!````I(%Y```` -H9FEL93)55`4``ZQ;3T95>```4$L%!@`````#``,`OP```+L````````` +M4$L#!`H`"````%EFLS8````````````````$`!4`9&ER+U54"0`#&55/1M19 +M_4A5>`0`Z`/H`U!+!P@```````````````!02P,$%`````@`;V:S-CHW9CT* +M````$@````4`%0!F:6QE,554"0`#055/1L!9_4A5>`0`Z`/H`\M(S`0`Z`/H`\M(S```4$L!`A<#%``(``@`;V:S-CHW9CT*````$@````4`#0`` +M`````0```.V!1P```&9I;&4Q550%``-!54]&57@``%!+`0(7`Q0`"``(`%IJ +MLS8Z-V8]"@```!(````%``T```````$```#M@8D```!F:6QE,E54!0`#K%M/ +;1E5X``!02P4&``````,``P"_````VP`````` ` end Modified: user/kmacy/HEAD_fast_xmit/lib/libc/gen/__xuname.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libc/gen/__xuname.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libc/gen/__xuname.c Tue Oct 28 06:27:16 2008 (r184396) @@ -45,94 +45,102 @@ __xuname(int namesize, void *namebuf) { int mib[2], rval; size_t len; - char *p; + char *p, *q; int oerrno; - struct xutsname { - char sysname[namesize]; /* Name of this OS. */ - char nodename[namesize]; /* Name of this network node. */ - char release[namesize]; /* Release level. */ - char version[namesize]; /* Version level. */ - char machine[namesize]; /* Hardware type. */ - } *name; - name = (struct xutsname *)namebuf; rval = 0; + q = (char *)namebuf; mib[0] = CTL_KERN; - mib[1] = KERN_OSTYPE; - len = sizeof(name->sysname); - oerrno = errno; - if (sysctl(mib, 2, &name->sysname, &len, NULL, 0) == -1) { - if(errno == ENOMEM) - errno = oerrno; - else - rval = -1; - } - name->sysname[sizeof(name->sysname) - 1] = '\0'; + if ((p = getenv("UNAME_s"))) - strlcpy(name->sysname, p, sizeof(name->sysname)); + strlcpy(q, p, namesize); + else { + mib[1] = KERN_OSTYPE; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; + else + rval = -1; + } + q[namesize - 1] = '\0'; + } + q += namesize; - mib[0] = CTL_KERN; mib[1] = KERN_HOSTNAME; - len = sizeof(name->nodename); + len = namesize; oerrno = errno; - if (sysctl(mib, 2, &name->nodename, &len, NULL, 0) == -1) { - if(errno == ENOMEM) + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) errno = oerrno; else rval = -1; } - name->nodename[sizeof(name->nodename) - 1] = '\0'; + q[namesize - 1] = '\0'; + q += namesize; - mib[0] = CTL_KERN; - mib[1] = KERN_OSRELEASE; - len = sizeof(name->release); - oerrno = errno; - if (sysctl(mib, 2, &name->release, &len, NULL, 0) == -1) { - if(errno == ENOMEM) - errno = oerrno; - else - rval = -1; - } - name->release[sizeof(name->release) - 1] = '\0'; if ((p = getenv("UNAME_r"))) - strlcpy(name->release, p, sizeof(name->release)); - - /* The version may have newlines in it, turn them into spaces. */ - mib[0] = CTL_KERN; - mib[1] = KERN_VERSION; - len = sizeof(name->version); - oerrno = errno; - if (sysctl(mib, 2, &name->version, &len, NULL, 0) == -1) { - if (errno == ENOMEM) - errno = oerrno; - else - rval = -1; - } - name->version[sizeof(name->version) - 1] = '\0'; - for (p = name->version; len--; ++p) { - if (*p == '\n' || *p == '\t') { - if (len > 1) - *p = ' '; + strlcpy(q, p, namesize); + else { + mib[1] = KERN_OSRELEASE; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; else - *p = '\0'; + rval = -1; } + q[namesize - 1] = '\0'; } + q += namesize; + if ((p = getenv("UNAME_v"))) - strlcpy(name->version, p, sizeof(name->version)); + strlcpy(q, p, namesize); + else { - mib[0] = CTL_HW; - mib[1] = HW_MACHINE; - len = sizeof(name->machine); - oerrno = errno; - if (sysctl(mib, 2, &name->machine, &len, NULL, 0) == -1) { - if (errno == ENOMEM) - errno = oerrno; - else - rval = -1; + /* + * The version may have newlines in it, turn them into + * spaces. + */ + mib[1] = KERN_VERSION; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; + else + rval = -1; + } + q[namesize - 1] = '\0'; + for (p = q; len--; ++p) { + if (*p == '\n' || *p == '\t') { + if (len > 1) + *p = ' '; + else + *p = '\0'; + } + } } - name->machine[sizeof(name->machine) - 1] = '\0'; + q += namesize; + if ((p = getenv("UNAME_m"))) - strlcpy(name->machine, p, sizeof(name->machine)); + strlcpy(q, p, namesize); + else { + mib[0] = CTL_HW; + mib[1] = HW_MACHINE; + len = namesize; + oerrno = errno; + if (sysctl(mib, 2, q, &len, NULL, 0) == -1) { + if (errno == ENOMEM) + errno = oerrno; + else + rval = -1; + } + q[namesize - 1] = '\0'; + } + return (rval); } Modified: user/kmacy/HEAD_fast_xmit/lib/libc/gen/posix_spawn.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libc/gen/posix_spawn.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libc/gen/posix_spawn.c Tue Oct 28 06:27:16 2008 (r184396) @@ -444,7 +444,7 @@ posix_spawnattr_setpgroup(posix_spawnatt } int -posix_spawnattr_setschedparam(posix_spawnattr_t *sa __restrict, +posix_spawnattr_setschedparam(posix_spawnattr_t * __restrict sa, const struct sched_param * __restrict schedparam) { (*sa)->sa_schedparam = *schedparam; Modified: user/kmacy/HEAD_fast_xmit/lib/libc/string/strlcpy.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libc/string/strlcpy.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libc/string/strlcpy.c Tue Oct 28 06:27:16 2008 (r184396) @@ -1,35 +1,21 @@ -/* $OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $ */ +/* $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $ */ /* * Copyright (c) 1998 Todd C. Miller - * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. + * 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. * - * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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. + * 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. */ -#if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $"; -#endif /* LIBC_SCCS and not lint */ #include __FBSDID("$FreeBSD$"); @@ -42,21 +28,18 @@ __FBSDID("$FreeBSD$"); * Returns strlen(src); if retval >= siz, truncation occurred. */ size_t -strlcpy(dst, src, siz) - char *dst; - const char *src; - size_t siz; +strlcpy(char *dst, const char *src, size_t siz) { char *d = dst; const char *s = src; size_t n = siz; /* Copy as many bytes as will fit */ - if (n != 0 && --n != 0) { - do { - if ((*d++ = *s++) == 0) + if (n != 0) { + while (--n != 0) { + if ((*d++ = *s++) == '\0') break; - } while (--n != 0); + } } /* Not enough room in dst, add NUL and traverse rest of src */ Modified: user/kmacy/HEAD_fast_xmit/lib/libc/string/strxfrm.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libc/string/strxfrm.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libc/string/strxfrm.c Tue Oct 28 06:27:16 2008 (r184396) @@ -45,17 +45,8 @@ strxfrm(char * __restrict dest, const ch return 0; } - if (__collate_load_error) { - slen = strlen(src); - if (len > 0) { - if (slen < len) - strcpy(dest, src); - else { - strlcpy(dest, src, len); - } - } - return slen; - } + if (__collate_load_error) + return strlcpy(dest, src, len); slen = 0; prim = sec = 0; Modified: user/kmacy/HEAD_fast_xmit/lib/libc/sys/mmap.2 ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libc/sys/mmap.2 Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libc/sys/mmap.2 Tue Oct 28 06:27:16 2008 (r184396) @@ -28,7 +28,7 @@ .\" @(#)mmap.2 8.4 (Berkeley) 5/11/95 .\" $FreeBSD$ .\" -.Dd April 21, 2006 +.Dd October 24, 2008 .Dt MMAP 2 .Os .Sh NAME @@ -252,6 +252,11 @@ In the future we may define an additiona in which the file descriptor argument specifies a file or device to which swapping should be done. +.Sh NOTES +Although this implementation does not impose any alignment restrictions on +the +.Fa offset +argument, a portable program must only use page-aligned values. .Sh RETURN VALUES Upon successful completion, .Fn mmap @@ -307,13 +312,6 @@ was negative. was specified and the .Fa fd argument was not -1. -The -.Fa offset -argument -was not page-aligned. -(See -.Sx BUGS -below.) .It Bq Er ENODEV .Dv MAP_ANON has not been specified and Modified: user/kmacy/HEAD_fast_xmit/lib/libcam/camlib.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libcam/camlib.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libcam/camlib.c Tue Oct 28 06:27:16 2008 (r184396) @@ -346,6 +346,9 @@ cam_open_btl(path_id_t path_id, target_i bzero(&ccb, sizeof(union ccb)); ccb.ccb_h.func_code = XPT_DEV_MATCH; + ccb.ccb_h.path_id = CAM_XPT_PATH_ID; + ccb.ccb_h.target_id = CAM_TARGET_WILDCARD; + ccb.ccb_h.target_lun = CAM_LUN_WILDCARD; /* Setup the result buffer */ bufsize = sizeof(struct dev_match_result); Modified: user/kmacy/HEAD_fast_xmit/lib/libfetch/http.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libfetch/http.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libfetch/http.c Tue Oct 28 06:27:16 2008 (r184396) @@ -1064,6 +1064,7 @@ http_request(struct url *URL, const char if (url->offset == size && url->length == 0) { /* asked for 0 bytes; fake it */ offset = url->offset; + clength = -1; conn->err = HTTP_OK; break; } else { Modified: user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.3 ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.3 Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.3 Tue Oct 28 06:27:16 2008 (r184396) @@ -46,12 +46,13 @@ The function opens or creates a file and acquires an exclusive lock on it. It is essentially equivalent with calling .Fn open -with the same parameters followed by -.Fn flock -with an -.Va operation -argument of -.Dv LOCK_EX , +with the same parameters followed by an +.Fn fcntl +.Dv F_SETLK +or +.Dv F_SETLKW +operation with lock type +.Dv F_WRLCK , except that .Fn flopen will attempt to detect and handle races that may occur between opening @@ -86,12 +87,12 @@ returns a valid file descriptor. Otherwise, it returns -1, and sets .Va errno as described in -.Xr flock 2 +.Xr fcntl 2 and .Xr open 2 . .Sh SEE ALSO .Xr errno 2 , -.Xr flock 2 , +.Xr fcntl 2 , .Xr open 2 .Sh HISTORY The Modified: user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libutil/flopen.c Tue Oct 28 06:27:16 2008 (r184396) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2007 Dag-Erling Coïdan Smørgrav + * Copyright (c) 2007 Dag-Erling Coïdan Smørgrav * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,12 +28,12 @@ #include __FBSDID("$FreeBSD$"); -#include #include #include #include #include +#include #include #include @@ -42,6 +42,7 @@ int flopen(const char *path, int flags, ...) { int fd, operation, serrno, trunc; + struct flock lock; struct stat sb, fsb; mode_t mode; @@ -54,13 +55,14 @@ flopen(const char *path, int flags, ...) va_list ap; va_start(ap, flags); - mode = va_arg(ap, int); /* mode_t promoted to int */ + mode = (mode_t)va_arg(ap, int); /* mode_t promoted to int */ va_end(ap); } - operation = LOCK_EX; - if (flags & O_NONBLOCK) - operation |= LOCK_NB; + memset(&lock, 0, sizeof lock); + lock.l_type = ((flags & O_ACCMODE) == O_RDONLY) ? F_RDLCK : F_WRLCK; + lock.l_whence = SEEK_SET; + operation = (flags & O_NONBLOCK) ? F_SETLK : F_SETLKW; trunc = (flags & O_TRUNC); flags &= ~O_TRUNC; @@ -69,35 +71,35 @@ flopen(const char *path, int flags, ...) if ((fd = open(path, flags, mode)) == -1) /* non-existent or no access */ return (-1); - if (flock(fd, operation) == -1) { + if (fcntl(fd, operation, &lock) == -1) { /* unsupported or interrupted */ serrno = errno; - close(fd); + (void)close(fd); errno = serrno; return (-1); } if (stat(path, &sb) == -1) { /* disappeared from under our feet */ - close(fd); + (void)close(fd); continue; } if (fstat(fd, &fsb) == -1) { /* can't happen [tm] */ serrno = errno; - close(fd); + (void)close(fd); errno = serrno; return (-1); } if (sb.st_dev != fsb.st_dev || sb.st_ino != fsb.st_ino) { /* changed under our feet */ - close(fd); + (void)close(fd); continue; } if (trunc && ftruncate(fd, 0) != 0) { /* can't happen [tm] */ serrno = errno; - close(fd); + (void)close(fd); errno = serrno; return (-1); } Modified: user/kmacy/HEAD_fast_xmit/lib/libutil/login_cap.h ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libutil/login_cap.h Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libutil/login_cap.h Tue Oct 28 06:27:16 2008 (r184396) @@ -81,7 +81,7 @@ typedef struct login_time { #define LTM_NONE 0x00 #define LTM_SUN 0x01 #define LTM_MON 0x02 -#define LTM_TUE 0x04 +#define LTM_TUE 0x04 #define LTM_WED 0x08 #define LTM_THU 0x10 #define LTM_FRI 0x20 @@ -104,7 +104,8 @@ login_cap_t *login_getclass(const char * login_cap_t *login_getpwclass(const struct passwd *); login_cap_t *login_getuserclass(const struct passwd *); -const char *login_getcapstr(login_cap_t*, const char *, const char *, const char *); +const char *login_getcapstr(login_cap_t *, const char *, const char *, + const char *); const char **login_getcaplist(login_cap_t *, const char *, const char *); const char *login_getstyle(login_cap_t *, const char *, const char *); rlim_t login_getcaptime(login_cap_t *, const char *, rlim_t, rlim_t); @@ -114,45 +115,51 @@ const char *login_getpath(login_cap_t *, int login_getcapbool(login_cap_t *, const char *, int); const char *login_setcryptfmt(login_cap_t *, const char *, const char *); -int setclasscontext(const char*, unsigned int); -int setusercontext(login_cap_t*, const struct passwd*, uid_t, unsigned int); +int setclasscontext(const char *, unsigned int); +void setclasscpumask(login_cap_t *); +int setusercontext(login_cap_t *, const struct passwd *, uid_t, unsigned int); void setclassresources(login_cap_t *); void setclassenvironment(login_cap_t *, const struct passwd *, int); /* Most of these functions are deprecated */ -int auth_approve(login_cap_t*, const char*, const char*); +int auth_approve(login_cap_t *, const char *, const char *); int auth_check(const char *, const char *, const char *, const char *, int *); void auth_env(void); -char *auth_mkvalue(const char *n); -int auth_response(const char *, const char *, const char *, const char *, int *, const char *, const char *); +char *auth_mkvalue(const char *); +int auth_response(const char *, const char *, const char *, const char *, int *, + const char *, const char *); void auth_rmfiles(void); int auth_scan(int); -int auth_script(const char*, ...); +int auth_script(const char *, ...); int auth_script_data(const char *, int, const char *, ...); char *auth_valud(const char *); int auth_setopt(const char *, const char *); void auth_clropts(void); -void auth_checknologin(login_cap_t*); -int auth_cat(const char*); +void auth_checknologin(login_cap_t *); +int auth_cat(const char *); -int auth_ttyok(login_cap_t*, const char *); -int auth_hostok(login_cap_t*, const char *, char const *); -int auth_timeok(login_cap_t*, time_t); +int auth_ttyok(login_cap_t *, const char *); +int auth_hostok(login_cap_t *, const char *, char const *); +int auth_timeok(login_cap_t *, time_t); struct tm; login_time_t parse_lt(const char *); +int in_lt(const login_time_t *, time_t *); int in_ltm(const login_time_t *, struct tm *, time_t *); int in_ltms(const login_time_t *, struct tm *, time_t *); +int in_lts(const login_time_t *, time_t *); /* helper functions */ int login_strinlist(const char **, char const *, int); int login_str2inlist(const char **, const char *, const char *, int); -login_time_t * login_timelist(login_cap_t *, char const *, int *, login_time_t **); +login_time_t * login_timelist(login_cap_t *, char const *, int *, + login_time_t **); int login_ttyok(login_cap_t *, const char *, const char *, const char *); -int login_hostok(login_cap_t *, const char *, const char *, const char *, const char *); +int login_hostok(login_cap_t *, const char *, const char *, const char *, + const char *); __END_DECLS Modified: user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.3 ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.3 Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.3 Tue Oct 28 06:27:16 2008 (r184396) @@ -19,11 +19,12 @@ .\" .\" $FreeBSD$ .\" -.Dd December 28, 1996 +.Dd October 20, 2008 .Os .Dt LOGIN_CLASS 3 .Sh NAME .Nm setclasscontext , +.Nm setclasscpumask , .Nm setclassenvironment , .Nm setclassresources , .Nm setusercontext @@ -35,12 +36,14 @@ .In login_cap.h .Ft int .Fn setclasscontext "const char *classname" "unsigned int flags" -.Ft int -.Fn setusercontext "login_cap_t *lc" "const struct passwd *pwd" "uid_t uid" "unsigned int flags" .Ft void -.Fn setclassresources "login_cap_t *lc" +.Fn setclasscpumask "login_cap_t *lc" .Ft void .Fn setclassenvironment "login_cap_t *lc" "const struct passwd *pwd" "int paths" +.Ft void +.Fn setclassresources "login_cap_t *lc" +.Ft int +.Fn setusercontext "login_cap_t *lc" "const struct passwd *pwd" "uid_t uid" "unsigned int flags" .Sh DESCRIPTION These functions provide a higher level interface to the login class database than those documented in @@ -162,7 +165,7 @@ and set the cpu affinity to the specifie The string may contain a comma separated list of numbers and/or number ranges as handled by the .Xr cpuset 1 -utility or the case-insensitive string +utility or the case-insensitive string .Ql default . If the string is .Ql default @@ -182,6 +185,7 @@ are substituted for the user's home dire respectively. .Pp The +.Fn setclasscpumask , .Fn setclassresources and .Fn setclassenvironment Modified: user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.c Tue Oct 28 06:26:08 2008 (r184395) +++ user/kmacy/HEAD_fast_xmit/lib/libutil/login_class.c Tue Oct 28 06:27:16 2008 (r184396) @@ -25,14 +25,16 @@ #include __FBSDID("$FreeBSD$"); -#include #include -#include -#include -#include #include #include +#include #include +#include +#include + +#include +#include #include #include #include @@ -92,7 +94,7 @@ setclassresources(login_cap_t *lc) if (getrlimit(lr->why, &rlim) != 0) syslog(LOG_ERR, "getting %s resource limit: %m", lr->what); else { - char name_cur[40]; + char name_cur[40]; char name_max[40]; rlim_t rcur = rlim.rlim_cur; rlim_t rmax = rlim.rlim_max; @@ -104,7 +106,7 @@ setclassresources(login_cap_t *lc) rmax = (*lr->who)(lc, lr->what, rmax, rmax); rlim.rlim_cur = (*lr->who)(lc, name_cur, rcur, rcur); rlim.rlim_max = (*lr->who)(lc, name_max, rmax, rmax); - + if (setrlimit(lr->why, &rlim) == -1) syslog(LOG_WARNING, "set class '%s' resource limit %s: %m", lc->lc_class, lr->what); } @@ -185,7 +187,7 @@ substvar(const char * var, const struct } } - return np; + return (np); } @@ -309,7 +311,7 @@ list2cpuset(const char *list, cpuset_t * *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 07:37:02 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8EC5F1065674; Tue, 28 Oct 2008 07:37:02 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7EB2E8FC1E; Tue, 28 Oct 2008 07:37:02 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S7b23F086466; Tue, 28 Oct 2008 07:37:02 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S7b295086465; Tue, 28 Oct 2008 07:37:02 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280737.m9S7b295086465@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 07:37:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184397 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 07:37:02 -0000 Author: kmacy Date: Tue Oct 28 07:37:02 2008 New Revision: 184397 URL: http://svn.freebsd.org/changeset/base/184397 Log: - don't pass mbuf to arpresolve in flowtable_lookup - in the current code path it causes a dangling referenc - allow duplicate flow locks Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 06:27:16 2008 (r184396) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 07:37:02 2008 (r184397) @@ -625,7 +625,7 @@ uncached: if (ro.ro_rt == NULL) error = ENETUNREACH; else { - error = arpresolve(ro.ro_rt->rt_ifp, ro.ro_rt, m, + error = arpresolve(ro.ro_rt->rt_ifp, ro.ro_rt, NULL, &ro.ro_dst, desten); route_to_rtentry_info(&ro, error ? NULL : desten, ri); @@ -696,7 +696,7 @@ flowtable_alloc(int nentry, int flags) ft->ft_locks = malloc(ft->ft_lock_count*sizeof(struct mtx), M_RTABLE, M_WAITOK | M_ZERO); for (i = 0; i < ft->ft_lock_count; i++) - mtx_init(&ft->ft_locks[i], "flow", NULL, MTX_DEF); + mtx_init(&ft->ft_locks[i], "flow", NULL, MTX_DEF|MTX_DUPOK); ft->ft_masks[0] = bit_alloc(nentry); } From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 08:21:42 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A9F881065673; Tue, 28 Oct 2008 08:21:42 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 66F2F8FC1C; Tue, 28 Oct 2008 08:21:42 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S8Lgs7087429; Tue, 28 Oct 2008 08:21:42 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S8Lgfp087428; Tue, 28 Oct 2008 08:21:42 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280821.m9S8Lgfp087428@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 08:21:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184398 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 08:21:42 -0000 Author: kmacy Date: Tue Oct 28 08:21:41 2008 New Revision: 184398 URL: http://svn.freebsd.org/changeset/base/184398 Log: - fix index generation from hash - set ro.ro_rt before passing ro to route_to_rtentry_info Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 07:37:02 2008 (r184397) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 08:21:41 2008 (r184398) @@ -403,7 +403,7 @@ static struct flentry * flowtable_entry(struct flowtable *ft, uint32_t hash) { struct flentry *fle; - int index = (ft->ft_size % hash); + int index = (hash % ft->ft_size); if ((ft->ft_flags & FL_IPV6) == 0) { if (ft->ft_flags & FL_PCPU) @@ -603,6 +603,7 @@ flowtable_lookup(struct flowtable *ft, s fle->f_uptime = time_uptime; fle->f_flags |= flags; fle->f_rt->rt_rmx.rmx_pksent++; + ro.ro_rt = fle->f_rt; route_to_rtentry_info(&ro, fle->f_desten, ri); FL_ENTRY_UNLOCK(ft, hash); return (0); From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 08:41:26 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 58BCB106567B; Tue, 28 Oct 2008 08:41:26 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 491848FC1B; Tue, 28 Oct 2008 08:41:26 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9S8fPUP087911; Tue, 28 Oct 2008 08:41:25 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9S8fP14087910; Tue, 28 Oct 2008 08:41:25 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810280841.m9S8fP14087910@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 08:41:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184399 - user/kmacy/HEAD_fast_xmit/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 08:41:26 -0000 Author: kmacy Date: Tue Oct 28 08:41:25 2008 New Revision: 184399 URL: http://svn.freebsd.org/changeset/base/184399 Log: remove debug printfs Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Tue Oct 28 08:21:41 2008 (r184398) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Tue Oct 28 08:41:25 2008 (r184399) @@ -562,7 +562,6 @@ passout: * to pass an rtentry_info in * */ - printf("transmitting %p \n", m); if (ifp->if_output == ether_output) error = (*ifp->if_output)(ifp, m, NULL, (struct rtentry *)ri); @@ -606,7 +605,6 @@ passout: * to pass an rtentry_info in * */ - printf("transmitting %p \n", m); if (ifp->if_output == ether_output) error = (*ifp->if_output)(ifp, m, NULL, (struct rtentry *)ri); @@ -614,7 +612,6 @@ passout: error = (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, NULL); } else { - printf("freeing fragment %p error = %d\n", m, error); m_freem(m); } @@ -626,7 +623,6 @@ passout: done: return (error); bad: - printf("freeing %p error = %d \n", m, error); m_freem(m); goto done; } From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 21:04:37 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 944311065694; Tue, 28 Oct 2008 21:04:37 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 828008FE53; Tue, 28 Oct 2008 21:04:37 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9SL4btH003900; Tue, 28 Oct 2008 21:04:37 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9SL4bV2003898; Tue, 28 Oct 2008 21:04:37 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810282104.m9SL4bV2003898@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 21:04:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184423 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 21:04:37 -0000 Author: kmacy Date: Tue Oct 28 21:04:37 2008 New Revision: 184423 URL: http://svn.freebsd.org/changeset/base/184423 Log: fix flowtable and route build when RADIX_MPATH is enabled Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c user/kmacy/HEAD_fast_xmit/sys/net/route.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 19:52:56 2008 (r184422) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 21:04:37 2008 (r184423) @@ -272,12 +272,14 @@ struct flowtable { static uint32_t hashjitter; static int flowtable_disable; +#ifndef RADIX_MPATH static void in_rtalloc_ign_wrapper(struct route *ro, uint32_t hash, u_int fib) { in_rtalloc_ign(ro, 0, fib); } +#endif static void flowtable_global_lock(struct flowtable *table, uint32_t hash) Modified: user/kmacy/HEAD_fast_xmit/sys/net/route.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/route.c Tue Oct 28 19:52:56 2008 (r184422) +++ user/kmacy/HEAD_fast_xmit/sys/net/route.c Tue Oct 28 21:04:37 2008 (r184423) @@ -809,9 +809,6 @@ rtexpunge(struct rtentry *rt) KASSERT(rt == RNTORT(rn), ("lookup mismatch, rt %p rn %p", rt, rn)); rt->rt_flags &= ~RTF_UP; -#ifdef RADIX_MPATH - ipv4_flow_free_all(rt); -#endif /* * Now search what's left of the subtree for any cloned @@ -950,9 +947,6 @@ rtrequest1_fib(int req, struct rt_addrin RT_LOCK(rt); RT_ADDREF(rt); rt->rt_flags &= ~RTF_UP; -#ifdef RADIX_MPATH - ipv4_flow_free_all(rt); -#endif goto deldone; /* done with the RTM_DELETE command */ } @@ -971,9 +965,6 @@ normal_rtdel: RT_LOCK(rt); RT_ADDREF(rt); rt->rt_flags &= ~RTF_UP; -#ifdef RADIX_MPATH - ipv4_flow_free_all(rt); -#endif /* * Now search what's left of the subtree for any cloned * routes which might have been formed from this node. From owner-svn-src-user@FreeBSD.ORG Tue Oct 28 21:05:10 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 247B7106567F; Tue, 28 Oct 2008 21:05:10 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1279C8FE4D; Tue, 28 Oct 2008 21:05:10 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9SL595Z003951; Tue, 28 Oct 2008 21:05:09 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9SL59RE003950; Tue, 28 Oct 2008 21:05:09 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810282105.m9SL59RE003950@svn.freebsd.org> From: Kip Macy Date: Tue, 28 Oct 2008 21:05:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184424 - user/kmacy/HEAD_fast_xmit/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Oct 2008 21:05:10 -0000 Author: kmacy Date: Tue Oct 28 21:05:09 2008 New Revision: 184424 URL: http://svn.freebsd.org/changeset/base/184424 Log: hook flowtable in to ip forwarding path Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Tue Oct 28 21:04:37 2008 (r184423) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Tue Oct 28 21:05:09 2008 (r184424) @@ -213,6 +213,7 @@ ip_fw_chk_t *ip_fw_chk_ptr = NULL; ip_dn_io_t *ip_dn_io_ptr = NULL; int fw_one_pass = 1; struct flowtable *ipv4_ft; +struct flowtable *ipv4_forward_ft; static void ip_freef(struct ipqhead *, struct ipq *); @@ -281,6 +282,12 @@ ip_init(void) netisr_register(NETISR_IP, ip_input, &ipintrq, 0); ipv4_ft = flowtable_alloc(2048, FL_PCPU); +#ifdef RADIX_MPATH + ipv4_forward_ft = flowtable_alloc(128*1024, FL_HASH_PORTS); +#else + ipv4_forward_ft = flowtable_alloc(16*1024, 0); +#endif + } void @@ -1289,8 +1296,8 @@ ip_forward(struct mbuf *m, int srcrt) struct in_ifaddr *ia = NULL; struct mbuf *mcopy; struct in_addr dest; - struct route ro; - int error, type = 0, code = 0, mtu = 0, cached = 0; + struct rtentry_info ri; + int error, type = 0, code = 0, mtu = 0; if (m->m_flags & (M_BCAST|M_MCAST) || in_canforward(ip->ip_dst) == 0) { V_ipstat.ips_cantforward++; @@ -1309,29 +1316,16 @@ ip_forward(struct mbuf *m, int srcrt) } #endif - bzero(&ro, sizeof(ro)); -#ifdef RADIX_MPATH - hash = ipv4_flow_alloc(m, &ro); + error = flowtable_lookup(ipv4_forward_ft, m, &ri); - if (ro.ro_rt == NULL) - rtalloc_mpath_fib(&ro, hash, M_GETFIB(m)); - else - cached = 1; - - if (ro->ro_rt != NULL) - ia = ifatoia(ro.ro_rt->rt_ifa); -#else - /* - * I love how we go to all the trouble to look up the - * route and then throw it away KMM - */ - ia = ip_rtaddr(ip->ip_dst, M_GETFIB(m)); -#endif - if (!srcrt && ia == NULL) { + if (!srcrt && error) { icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_HOST, 0, 0); return; - } + } else if (error) + return; +#define RIA(ri) ((struct in_ifaddr *)((ri)->ri_ifa)) + ia = RIA(&ri); /* * Save the IP header and at most 8 bytes of the payload, * in case we need to generate an ICMP message to the src. @@ -1381,54 +1375,42 @@ ip_forward(struct mbuf *m, int srcrt) * Also, don't send redirect if forwarding using a default route * or a route modified by a redirect. */ + + /* + * XXX check that this actually still works + * + */ dest.s_addr = 0; if (!srcrt && V_ipsendredirects && ia->ia_ifp == m->m_pkthdr.rcvif) { struct sockaddr_in *sin; - struct rtentry *rt; - sin = (struct sockaddr_in *)&ro.ro_dst; + sin = (struct sockaddr_in *)&ri.ri_dst; sin->sin_family = AF_INET; sin->sin_len = sizeof(*sin); sin->sin_addr = ip->ip_dst; - in_rtalloc_ign(&ro, RTF_CLONING, M_GETFIB(m)); - rt = ro.ro_rt; - - if (rt && (rt->rt_flags & (RTF_DYNAMIC|RTF_MODIFIED)) == 0 && - satosin(rt_key(rt))->sin_addr.s_addr != 0) { -#define RTA(rt) ((struct in_ifaddr *)(rt->rt_ifa)) + if ((ri.ri_flags & (RTF_DYNAMIC|RTF_MODIFIED)) == 0 && + sin->sin_addr.s_addr != 0) { u_long src = ntohl(ip->ip_src.s_addr); - if (RTA(rt) && - (src & RTA(rt)->ia_subnetmask) == RTA(rt)->ia_subnet) { - if (rt->rt_flags & RTF_GATEWAY) - dest.s_addr = satosin(rt->rt_gateway)->sin_addr.s_addr; - else - dest.s_addr = ip->ip_dst.s_addr; + if (RIA(&ri) && + (src & RIA(&ri)->ia_subnetmask) == RIA(&ri)->ia_subnet) { /* Router requirements says to only send host redirects */ type = ICMP_REDIRECT; code = ICMP_REDIRECT_HOST; } } - if (rt && (cached == 0)) - RTFREE(rt); } /* * Try to cache the route MTU from ip_output so we can consider it for * the ICMP_UNREACH_NEEDFRAG "Next-Hop MTU" field described in RFC1191. */ - error = ip_output(m, NULL, &ro, IP_FORWARDING, NULL, NULL); - -#ifdef RADIX_MPATH - if (cached) - ipv4_flow_free(hash); -#endif - if (error == EMSGSIZE && ro.ro_rt) - mtu = ro.ro_rt->rt_rmx.rmx_mtu; - if (ro.ro_rt && (cached == 0)) - RTFREE(ro.ro_rt); + error = ip_output(m, NULL, (struct route *)&ri, IP_FORWARDING|IP_RTINFO, + NULL, NULL); + if (error == EMSGSIZE) + mtu = ri.ri_mtu; if (error) V_ipstat.ips_cantforward++; else { From owner-svn-src-user@FreeBSD.ORG Wed Oct 29 05:37:02 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB73B106568E; Wed, 29 Oct 2008 05:37:02 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A64BE8FC1C; Wed, 29 Oct 2008 05:37:02 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9T5b2Ug013939; Wed, 29 Oct 2008 05:37:02 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9T5b2p6013938; Wed, 29 Oct 2008 05:37:02 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810290537.m9T5b2p6013938@svn.freebsd.org> From: Kip Macy Date: Wed, 29 Oct 2008 05:37:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184430 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Oct 2008 05:37:02 -0000 Author: kmacy Date: Wed Oct 29 05:37:02 2008 New Revision: 184430 URL: http://svn.freebsd.org/changeset/base/184430 Log: add sysctl to dynamically disable flowtable Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Tue Oct 28 22:09:30 2008 (r184429) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Wed Oct 29 05:37:02 2008 (r184430) @@ -6,6 +6,7 @@ #include #include #include +#include #include @@ -270,7 +271,13 @@ struct flowtable { }; static uint32_t hashjitter; + +SYSCTL_NODE(_net_inet, OID_AUTO, flowtable, CTLFLAG_RD, NULL, "flowtable"); + static int flowtable_disable; +SYSCTL_INT(_net_inet_flowtable, OID_AUTO, enable, CTLFLAG_RW, + &flowtable_disable, 0, "disable flowtable."); + #ifndef RADIX_MPATH static void @@ -723,3 +730,4 @@ flowtable_alloc(int nentry, int flags) return (ft); } + From owner-svn-src-user@FreeBSD.ORG Wed Oct 29 05:48:43 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 893D71065676; Wed, 29 Oct 2008 05:48:43 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 73D888FC14; Wed, 29 Oct 2008 05:48:43 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9T5mhBv014170; Wed, 29 Oct 2008 05:48:43 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9T5mhXk014169; Wed, 29 Oct 2008 05:48:43 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810290548.m9T5mhXk014169@svn.freebsd.org> From: Kip Macy Date: Wed, 29 Oct 2008 05:48:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184431 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Oct 2008 05:48:43 -0000 Author: kmacy Date: Wed Oct 29 05:48:43 2008 New Revision: 184431 URL: http://svn.freebsd.org/changeset/base/184431 Log: rename enable disable make sure family is set correctly on ri_dst Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Wed Oct 29 05:37:02 2008 (r184430) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Wed Oct 29 05:48:43 2008 (r184431) @@ -275,7 +275,7 @@ static uint32_t hashjitter; SYSCTL_NODE(_net_inet, OID_AUTO, flowtable, CTLFLAG_RD, NULL, "flowtable"); static int flowtable_disable; -SYSCTL_INT(_net_inet_flowtable, OID_AUTO, enable, CTLFLAG_RW, +SYSCTL_INT(_net_inet_flowtable, OID_AUTO, disable, CTLFLAG_RW, &flowtable_disable, 0, "disable flowtable."); @@ -536,6 +536,8 @@ route_to_rtentry_info(struct route *ro, else memcpy(&ri->ri_dst, rt->rt_gateway, sizeof(struct sockaddr)); + ri->ri_dst.sa_family = AF_INET; + if (desten) { memcpy(ri->ri_desten, desten, ETHER_ADDR_LEN); ri->ri_flags |= RTF_DESTEN_VALID; From owner-svn-src-user@FreeBSD.ORG Wed Oct 29 05:51:03 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC972106567B; Wed, 29 Oct 2008 05:51:03 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D79C88FC12; Wed, 29 Oct 2008 05:51:03 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9T5p3Z5014245; Wed, 29 Oct 2008 05:51:03 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9T5p38U014244; Wed, 29 Oct 2008 05:51:03 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810290551.m9T5p38U014244@svn.freebsd.org> From: Kip Macy Date: Wed, 29 Oct 2008 05:51:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184432 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Oct 2008 05:51:04 -0000 Author: kmacy Date: Wed Oct 29 05:51:03 2008 New Revision: 184432 URL: http://svn.freebsd.org/changeset/base/184432 Log: fix sockaddr type bug Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Wed Oct 29 05:48:43 2008 (r184431) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Wed Oct 29 05:51:03 2008 (r184432) @@ -536,7 +536,7 @@ route_to_rtentry_info(struct route *ro, else memcpy(&ri->ri_dst, rt->rt_gateway, sizeof(struct sockaddr)); - ri->ri_dst.sa_family = AF_INET; + ((struct sockaddr *)&ri->ri_dst)->sa_family = AF_INET; if (desten) { memcpy(ri->ri_desten, desten, ETHER_ADDR_LEN); From owner-svn-src-user@FreeBSD.ORG Wed Oct 29 06:38:09 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E6FB2106567A; Wed, 29 Oct 2008 06:38:09 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D286E8FC18; Wed, 29 Oct 2008 06:38:09 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9T6c9wB015047; Wed, 29 Oct 2008 06:38:09 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9T6c9YQ015046; Wed, 29 Oct 2008 06:38:09 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810290638.m9T6c9YQ015046@svn.freebsd.org> From: Kip Macy Date: Wed, 29 Oct 2008 06:38:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184433 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Oct 2008 06:38:10 -0000 Author: kmacy Date: Wed Oct 29 06:38:09 2008 New Revision: 184433 URL: http://svn.freebsd.org/changeset/base/184433 Log: fix sockaddr copy check in route_to_rtentry_info Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Wed Oct 29 05:51:03 2008 (r184432) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Wed Oct 29 06:38:09 2008 (r184433) @@ -531,10 +531,10 @@ route_to_rtentry_info(struct route *ro, ri->ri_flags = rt->rt_flags; ri->ri_mtu = rt->rt_rmx.rmx_mtu; - if (rt->rt_flags & RTF_GATEWAY && !IN_MULTICAST(sin->sin_addr.s_addr)) - memcpy(&ri->ri_dst, sin, sizeof(struct sockaddr)); - else + if ((rt->rt_flags & RTF_GATEWAY) && !IN_MULTICAST(sin->sin_addr.s_addr)) memcpy(&ri->ri_dst, rt->rt_gateway, sizeof(struct sockaddr)); + else + memcpy(&ri->ri_dst, sin, sizeof(struct sockaddr)); ((struct sockaddr *)&ri->ri_dst)->sa_family = AF_INET; From owner-svn-src-user@FreeBSD.ORG Wed Oct 29 07:13:04 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AE119106568C; Wed, 29 Oct 2008 07:13:04 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9A5518FC1D; Wed, 29 Oct 2008 07:13:04 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9T7D4kE015744; Wed, 29 Oct 2008 07:13:04 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9T7D4Y0015743; Wed, 29 Oct 2008 07:13:04 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810290713.m9T7D4Y0015743@svn.freebsd.org> From: Kip Macy Date: Wed, 29 Oct 2008 07:13:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184434 - user/kmacy/HEAD_fast_xmit/sys/i386/conf X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Oct 2008 07:13:04 -0000 Author: kmacy Date: Wed Oct 29 07:13:04 2008 New Revision: 184434 URL: http://svn.freebsd.org/changeset/base/184434 Log: add stripped down config for performance testing Added: user/kmacy/HEAD_fast_xmit/sys/i386/conf/PERFTEST Added: user/kmacy/HEAD_fast_xmit/sys/i386/conf/PERFTEST ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/kmacy/HEAD_fast_xmit/sys/i386/conf/PERFTEST Wed Oct 29 07:13:04 2008 (r184434) @@ -0,0 +1,275 @@ +# +# GENERIC -- Generic kernel configuration file for FreeBSD/i386 +# +# For more information on this file, please read the handbook section on +# Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD: user/kmacy/HEAD_fast_xmit/sys/i386/conf/GENERIC 183735 2008-10-09 21:25:01Z n_hibma $ + +cpu I686_CPU +ident GENERIC + +# To statically compile in device wiring instead of /boot/device.hints +#hints "GENERIC.hints" # Default places to look for devices. + +makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols + +options SCHED_ULE # ULE scheduler +options PREEMPTION # Enable kernel thread preemption +options INET # InterNETworking +options INET6 # IPv6 communications protocols +options SCTP # Stream Control Transmission Protocol +options FFS # Berkeley Fast Filesystem +options SOFTUPDATES # Enable FFS soft updates support +options UFS_ACL # Support for access control lists +options UFS_DIRHASH # Improve performance on big directories +options UFS_GJOURNAL # Enable gjournal-based UFS journaling +options MD_ROOT # MD is a potential root device +options NFSCLIENT # Network Filesystem Client +options NFSSERVER # Network Filesystem Server +options NFSLOCKD # Network Lock Manager +options NFS_ROOT # NFS usable as /, requires NFSCLIENT +options MSDOSFS # MSDOS Filesystem +options CD9660 # ISO 9660 Filesystem +options PROCFS # Process filesystem (requires PSEUDOFS) +options PSEUDOFS # Pseudo-filesystem framework +options GEOM_PART_GPT # GUID Partition Tables. +options GEOM_LABEL # Provides labelization +options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP THIS!] +options COMPAT_FREEBSD4 # Compatible with FreeBSD4 +options COMPAT_FREEBSD5 # Compatible with FreeBSD5 +options COMPAT_FREEBSD6 # Compatible with FreeBSD6 +options COMPAT_FREEBSD7 # Compatible with FreeBSD7 +options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI +options KTRACE # ktrace(1) support +options STACK # stack(9) support +options SYSVSHM # SYSV-style shared memory +options SYSVMSG # SYSV-style message queues +options SYSVSEM # SYSV-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions +options KBD_INSTALL_CDEV # install a CDEV entry in /dev +options STOP_NMI # Stop CPUS using NMI instead of IPI +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +options AUDIT # Security event auditing + +# Debugging for use in -current +options KDB # Enable kernel debugger support. +options DDB # Support DDB. +options GDB # Support remote GDB. +#options INVARIANTS # Enable calls of extra sanity checking +#options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS +#options WITNESS # Enable checks to detect deadlocks and cycles +#options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed +options RADIX_MPATH +options LOCK_PROFILING + + +# To make an SMP kernel, the next two lines are needed +options SMP # Symmetric MultiProcessor Kernel +device apic # I/O APIC + +# CPU frequency control +device cpufreq + +# Bus support. +device acpi +device eisa +device pci + +# Floppy drives +device fdc + +# ATA and ATAPI devices +device ata +device atadisk # ATA disk drives +device ataraid # ATA RAID drives +device atapicd # ATAPI CDROM drives +device atapifd # ATAPI floppy drives +device atapist # ATAPI tape drives +options ATA_STATIC_ID # Static device numbering + +# SCSI Controllers +device ahb # EISA AHA1742 family +device ahc # AHA2940 and onboard AIC7xxx devices +options AHC_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~128k to driver. +device ahd # AHA39320/29320 and onboard AIC79xx devices +options AHD_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~215k to driver. +device amd # AMD 53C974 (Tekram DC-390(T)) +device hptiop # Highpoint RocketRaid 3xxx series +device isp # Qlogic family +#device ispfw # Firmware for QLogic HBAs- normally a module +device mpt # LSI-Logic MPT-Fusion +#device ncr # NCR/Symbios Logic +device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') +device trm # Tekram DC395U/UW/F DC315U adapters + +device adv # Advansys SCSI adapters +device adw # Advansys wide SCSI adapters +device aha # Adaptec 154x SCSI adapters +device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. +device bt # Buslogic/Mylex MultiMaster SCSI adapters + +device ncv # NCR 53C500 +device nsp # Workbit Ninja SCSI-3 +device stg # TMC 18C30/18C50 + +# SCSI peripherals +device scbus # SCSI bus (required for SCSI) +device ch # SCSI media changers +device da # Direct Access (disks) +device sa # Sequential Access (tape etc) +device cd # CD +device pass # Passthrough device (direct SCSI access) +device ses # SCSI Environmental Services (and SAF-TE) + +# RAID controllers interfaced to the SCSI subsystem +device amr # AMI MegaRAID +device arcmsr # Areca SATA II RAID +device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID +device ciss # Compaq Smart RAID 5* +device dpt # DPT Smartcache III, IV - See NOTES for options +device hptmv # Highpoint RocketRAID 182x +device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx +device iir # Intel Integrated RAID +device ips # IBM (Adaptec) ServeRAID +device mly # Mylex AcceleRAID/eXtremeRAID +device twa # 3ware 9000 series PATA/SATA RAID + +# RAID controllers +device aac # Adaptec FSA RAID +device aacp # SCSI passthrough for aac (requires CAM) +device ida # Compaq Smart RAID +device mfi # LSI MegaRAID SAS +device mlx # Mylex DAC960 family +device pst # Promise Supertrak SX6000 +device twe # 3ware ATA RAID + +# atkbdc0 controls both the keyboard and the PS/2 mouse +device atkbdc # AT keyboard controller +device atkbd # AT keyboard +device psm # PS/2 mouse + +device kbdmux # keyboard multiplexer + +device vga # VGA video card driver + +device splash # Splash screen and screen saver support + +# syscons is the default console driver, resembling an SCO console +device sc + +device agp # support several AGP chipsets + +# Power management support (see NOTES for more options) +#device apm +# Add suspend/resume support for the i8254. +device pmtimer + +# PCCARD (PCMCIA) support +# PCMCIA and cardbus bridge support +device cbb # cardbus (yenta) bridge +device pccard # PC Card (16-bit) bus +device cardbus # CardBus (32-bit) bus + +# Serial (COM) ports +device uart # Generic UART driver + +# Parallel port +device ppc +device ppbus # Parallel port bus (required) +device lpt # Printer +device plip # TCP/IP over parallel +device ppi # Parallel port interface device +#device vpo # Requires scbus and da + +# If you've got a "dumb" serial or parallel PCI card that is +# supported by the puc(4) glue driver, uncomment the following +# line to enable it (connects to sio, uart and/or ppc drivers): +#device puc + +# PCI Ethernet NICs. +device de # DEC/Intel DC21x4x (``Tulip'') +device em # Intel PRO/1000 Gigabit Ethernet Family +device igb # Intel PRO/1000 PCIE Server Gigabit Family +device ti # Alteon Networks Tigon I/II gigabit Ethernet +device txp # 3Com 3cR990 (``Typhoon'') +device vx # 3Com 3c590, 3c595 (``Vortex'') + +# PCI Ethernet NICs that use the common MII bus controller code. +# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! +device miibus # MII bus support +device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet +device bfe # Broadcom BCM440x 10/100 Ethernet +device bge # Broadcom BCM570xx Gigabit Ethernet +device dc # DEC/Intel 21143 and various workalikes +device et # Agere ET1310 10/100/Gigabit Ethernet +device fxp # Intel EtherExpress PRO/100B (82557, 82558) +device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet +device lge # Level 1 LXT1001 gigabit Ethernet +device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet +device nfe # nVidia nForce MCP on-board Ethernet +device nge # NatSemi DP83820 gigabit Ethernet +#device nve # nVidia nForce MCP on-board Ethernet Networking +device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le') +device re # RealTek 8139C+/8169/8169S/8110S +device rl # RealTek 8129/8139 +device sf # Adaptec AIC-6915 (``Starfire'') +device sis # Silicon Integrated Systems SiS 900/SiS 7016 +device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet +device ste # Sundance ST201 (D-Link DFE-550TX) +device stge # Sundance/Tamarack TC9021 gigabit Ethernet + +# Pseudo devices. +device loop # Network loopback +device random # Entropy device +device ether # Ethernet support +device tun # Packet tunnel. +device pty # BSD-style compatibility pseudo ttys +device md # Memory "disks" +device gif # IPv6 and IPv4 tunneling +device faith # IPv6-to-IPv4 relaying (translation) +device firmware # firmware assist module + +# The `bpf' device enables the Berkeley Packet Filter. +# Be aware of the administrative consequences of enabling this! +# Note that 'bpf' is required for DHCP. +device bpf # Berkeley packet filter + +# USB support +device uhci # UHCI PCI->USB interface +device ohci # OHCI PCI->USB interface +device ehci # EHCI PCI->USB interface (USB 2.0) +device usb # USB Bus (required) +#device udbp # USB Double Bulk Pipe devices +device ugen # Generic +device uhid # "Human Interface Devices" +device ukbd # Keyboard +device ulpt # Printer +device umass # Disks/Mass storage - Requires scbus and da +device ums # Mouse +device zyd # ZyDAS zb1211/zb1211b wireless NICs +device urio # Diamond Rio 500 MP3 player +device uscanner # Scanners + +# FireWire support +device firewire # FireWire bus code +device sbp # SCSI over FireWire (Requires scbus and da) +device fwe # Ethernet over FireWire (non-standard!) +device fwip # IP over FireWire (RFC 2734,3146) +device dcons # Dumb console driver +device dcons_crom # Configuration ROM for dcons + From owner-svn-src-user@FreeBSD.ORG Wed Oct 29 07:16:50 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 115B21065672; Wed, 29 Oct 2008 07:16:50 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F28D48FC21; Wed, 29 Oct 2008 07:16:49 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9T7GnSJ015843; Wed, 29 Oct 2008 07:16:49 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9T7GnoG015842; Wed, 29 Oct 2008 07:16:49 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200810290716.m9T7GnoG015842@svn.freebsd.org> From: Kip Macy Date: Wed, 29 Oct 2008 07:16:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184435 - user/kmacy/HEAD_fast_xmit/sys/i386/conf X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Oct 2008 07:16:50 -0000 Author: kmacy Date: Wed Oct 29 07:16:49 2008 New Revision: 184435 URL: http://svn.freebsd.org/changeset/base/184435 Log: remove zyd Modified: user/kmacy/HEAD_fast_xmit/sys/i386/conf/PERFTEST Modified: user/kmacy/HEAD_fast_xmit/sys/i386/conf/PERFTEST ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/i386/conf/PERFTEST Wed Oct 29 07:13:04 2008 (r184434) +++ user/kmacy/HEAD_fast_xmit/sys/i386/conf/PERFTEST Wed Oct 29 07:16:49 2008 (r184435) @@ -261,7 +261,6 @@ device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse -device zyd # ZyDAS zb1211/zb1211b wireless NICs device urio # Diamond Rio 500 MP3 player device uscanner # Scanners From owner-svn-src-user@FreeBSD.ORG Fri Oct 31 06:19:29 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 84AD51065678; Fri, 31 Oct 2008 06:19:29 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5F26D8FC1A; Fri, 31 Oct 2008 06:19:29 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9V6JTcW071880; Fri, 31 Oct 2008 06:19:29 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9V6JTeO071879; Fri, 31 Oct 2008 06:19:29 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200810310619.m9V6JTeO071879@svn.freebsd.org> From: Warner Losh Date: Fri, 31 Oct 2008 06:19:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184493 - user/imp X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Oct 2008 06:19:29 -0000 Author: imp Date: Fri Oct 31 06:19:28 2008 New Revision: 184493 URL: http://svn.freebsd.org/changeset/base/184493 Log: Setup my public WIP repo Added: user/imp/ From owner-svn-src-user@FreeBSD.ORG Fri Oct 31 06:26:50 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2783D106564A; Fri, 31 Oct 2008 06:26:50 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 023018FC0A; Fri, 31 Oct 2008 06:26:50 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9V6QnjE072111; Fri, 31 Oct 2008 06:26:49 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9V6QnnN072110; Fri, 31 Oct 2008 06:26:49 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200810310626.m9V6QnnN072110@svn.freebsd.org> From: Warner Losh Date: Fri, 31 Oct 2008 06:26:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184494 - user/imp/newcard X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Oct 2008 06:26:50 -0000 Author: imp Date: Fri Oct 31 06:26:49 2008 New Revision: 184494 URL: http://svn.freebsd.org/changeset/base/184494 Log: newcard project migrating from perforce. Added: user/imp/newcard/ From owner-svn-src-user@FreeBSD.ORG Fri Oct 31 06:27:13 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E42911065678; Fri, 31 Oct 2008 06:27:13 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BEFFC8FC14; Fri, 31 Oct 2008 06:27:13 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9V6RDn3072157; Fri, 31 Oct 2008 06:27:13 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9V6RDZ5072156; Fri, 31 Oct 2008 06:27:13 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200810310627.m9V6RDZ5072156@svn.freebsd.org> From: Warner Losh Date: Fri, 31 Oct 2008 06:27:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184495 - user/imp/newcard/sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Oct 2008 06:27:14 -0000 Author: imp Date: Fri Oct 31 06:27:13 2008 New Revision: 184495 URL: http://svn.freebsd.org/changeset/base/184495 Log: Initial copy of sys for newcard project. Added: user/imp/newcard/sys/ - copied from r184494, head/sys/ From owner-svn-src-user@FreeBSD.ORG Fri Oct 31 11:47:53 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D8DFB1065673; Fri, 31 Oct 2008 11:47:53 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C31C58FC25; Fri, 31 Oct 2008 11:47:53 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9VBlrwY079838; Fri, 31 Oct 2008 11:47:53 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9VBlp9u079793; Fri, 31 Oct 2008 11:47:51 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200810311147.m9VBlp9u079793@svn.freebsd.org> From: Edwin Groothuis Date: Fri, 31 Oct 2008 11:47:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184503 - in user/edwin/releasenotes: . head/release/doc/en_US.ISO8859-1/relnotes releng-6.0/release/doc/en_US.ISO8859-1/relnotes/alpha releng-6.0/release/doc/en_US.ISO8859-1/relnotes/a... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Oct 2008 11:47:53 -0000 Author: edwin Date: Fri Oct 31 11:47:51 2008 New Revision: 184503 URL: http://svn.freebsd.org/changeset/base/184503 Log: Commit everything of this project before I take this laptop on a trip overseas. It produces the right output for all versions which are not .0 versions, and has a good overview of when all tzdata data was imported, MFVd and MFCd. Modified: user/edwin/releasenotes/Makefile user/edwin/releasenotes/contrib-xmltoent.pl user/edwin/releasenotes/contrib.xml user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/relnotes/Makefile user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/Makefile user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/Makefile user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/Makefile user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/Makefile user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/powerpc/article.sgml user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/Makefile user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/powerpc/article.sgml user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml user/edwin/releasenotes/releng-7.0/release/doc/en_US.ISO8859-1/relnotes/Makefile user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/common/Makefile user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/powerpc/article.sgml user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml user/edwin/releasenotes/stable-7/release/doc/en_US.ISO8859-1/relnotes/Makefile Modified: user/edwin/releasenotes/Makefile ============================================================================== --- user/edwin/releasenotes/Makefile Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/Makefile Fri Oct 31 11:47:51 2008 (r184503) @@ -2,23 +2,26 @@ DIRS=head STABLE=7 6 -RELENG=7.0 6.4 6.3 6.2 6.1 6.0 +RELENG=7.0 6.3 6.2 6.1 6.0 build: .for d in ${DIRS} ${STABLE:S/^/stable-/} ${RELENG:S/^/releng-/} - @cd ${d}/release/doc/en_US.ISO8859-1/relnotes/; \ + @echo "==>> BUILDING IN ${d}"; \ + cd ${d}/release/doc/en_US.ISO8859-1/relnotes/; \ make .endfor clean: .for d in ${DIRS} ${STABLE:S/^/stable-/} ${RELENG:S/^/releng-/} - @cd ${d}/release/doc/en_US.ISO8859-1/relnotes/; \ + @echo "==>> CLEANING IN ${d}"; \ + cd ${d}/release/doc/en_US.ISO8859-1/relnotes/; \ make clean .endfor perl: .for d in ${DIRS} ${STABLE:S/^/stable-/} ${RELENG:S/^/releng-/} - @cd ${d}/release/doc/en_US.ISO8859-1/relnotes/; \ + @echo "==>> PERL IN ${d}"; \ + cd ${d}/release/doc/en_US.ISO8859-1/relnotes/; \ make contrib.ent .endfor Modified: user/edwin/releasenotes/contrib-xmltoent.pl ============================================================================== --- user/edwin/releasenotes/contrib-xmltoent.pl Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/contrib-xmltoent.pl Fri Oct 31 11:47:51 2008 (r184503) @@ -4,6 +4,29 @@ use XML::Parser; use Data::Dumper; use POSIX; use strict; +use Getopt::Std; + +my $CONTRIBXML; +my $CONTRIBENT; +my $RELEASEENT; +my $DEBUG; +{ + my %opts; + $opts{o} = "contrib.ent"; + $opts{r} = "relnotes.ent"; + $opts{x} = "contrib.xml"; + + getopts("do:r:x:", \%opts); + + $opts{o} = "/dev/tty" if (!defined $opts{o}); + $opts{r} = "release.ent" if (!defined $opts{r}); + $opts{x} = "contrib.xml" if (!defined $opts{x}); + + $DEBUG = $opts{d}; + $CONTRIBENT = $opts{o}; + $RELEASEENT = $opts{r}; + $CONTRIBXML = $opts{x}; +} my @tree = (); my @values = (); @@ -91,10 +114,14 @@ sub xml_char { return if ($treeindex == 4); if ($tree[5] eq "import") { + die "Already got import of $software - $swversion" + if (defined $softwares{$software}{versions}{$swversion}{import}); $softwares{$software}{versions}{$swversion}{import} = $value; return; } if ($tree[5] eq "mfv") { + die "Already got mfv of $software - $swversion" + if (defined $softwares{$software}{versions}{$swversion}{mfv}); $softwares{$software}{versions}{$swversion}{mfv} = $value; $softwares{$software}{versions}{$swversion}{mfc}{$mfvbranch} = $value if ($mfvbranch); @@ -125,7 +152,7 @@ my $p = new XML::Parser( End => \&xml_end, Char => \&xml_char, }); -$p->parsefile(defined $ARGV[0] ? $ARGV[0] : "../../../../../contrib.xml"); +$p->parsefile($CONTRIBXML); { my %r = ( @@ -134,7 +161,7 @@ $p->parsefile(defined $ARGV[0] ? $ARGV[0 "release.prev" => 1, "release.branch" => 1, ); - open(FIN, "../../share/sgml/release.ent"); + open(FIN, $RELEASEENT) or die("Cannot open $RELEASEENT for reading"); my @lines = ; close(FIN); chomp(@lines); @@ -161,34 +188,10 @@ $p->parsefile(defined $ARGV[0] ? $ARGV[0 # the creation date of branches{release.current} will be today. # if (!defined $branches{$releaseent{"release.current"}}) { - foreach my $sw (keys(%softwares)) { - foreach my $vs (keys(%{$softwares{$sw}{versions}})) { - next; - # XXX - next if (!defined $softwares{$sw}{versions}{$vs}{mfv}); - my $date = $softwares{$sw}{versions}{$vs}{mfv}; - my $branch = 0; - - foreach my $b (sort(keys(%branches))) { - if ($b !~ /\./ && - $date lt $branches{$b} && - ($branch eq "0" || $date lt $branches{$branch})) { - $branch = $b; - } - } - - $softwares{$sw}{versions}{$vs}{mfc}{$branch} = - $softwares{$sw}{versions}{$vs}{mfv}; - } - } - $releaseent{"release.current"} = $releaseent{"release.branch"}; -# $branches{$releaseent{"release.current"}} = -# $branches{$releaseent{"release.prev"}} my @lt = localtime(); $branches{$releaseent{"release.current"}} = strftime("%Y-%m-%d", 0, 0, 0, $lt[3], $lt[4], $lt[5]); - } # @@ -200,6 +203,7 @@ if (!defined $branches{$releaseent{"rele # my $thisversion = $releaseent{"release.current"}; my $prevversion = ""; +my $branchversion = $releaseent{"release.current"}; # XXX - This fails for 5.2.1 if ($thisversion =~ /^(\d+)\.(\d+)/) { @@ -210,6 +214,7 @@ if ($thisversion =~ /^(\d+)\.(\d+)/) { } else { $prevversion = sprintf("%d.%d", $major, $minor - 1); } + $branchversion =~ s/\..*$//; } elsif ($thisversion =~ /^(\d+)$/) { $prevversion = $1 - 1; } @@ -228,9 +233,43 @@ my @T2 = split(/\-/, $T2); my %updated = (); -#print $releaseent{"release.current"}, " - $thisversion - $prevversion\n"; -#print "$branches{$thisversion} - $branches{$prevversion}\n"; +if ($DEBUG) { + print "release.current: ", $releaseent{"release.current"}, " - ", + "branchversion - $branchversion - ", + "thisversion: $thisversion - ", + "prevversion: $prevversion\n"; + print "branches: thisversion: $branches{$thisversion} - ", + "prevversion: $branches{$prevversion} - ", + "branchversion: $branches{$branchversion}\n"; +} + +# +# During the period of $branch{prevversion} and $branch{thisversion}, +# everything commited to $branch{branchversion} is also commited to +# $branch{thisversion}. +# + +foreach my $sw (sort(keys(%softwares))) { + foreach my $vs (sort(keys(%{$softwares{$sw}{versions}}))) { + foreach my $branch (sort(keys(%{$softwares{$sw}{versions}{$vs}{mfc}}))) { + next if ($branch !~ /^\d+$/); + next if ($branch ne $branchversion); + my $thisdate = + $softwares{$sw}{versions}{$vs}{mfc}{$branch}; + my $destversion = ""; + if ($branches{$prevversion} lt $thisdate && + $thisdate lt $branches{$thisversion}) { + $softwares{$sw}{versions}{$vs}{mfc}{$thisversion} = $thisdate; + print "Transfering $sw version $vs from $branch to $thisversion\n" + if ($DEBUG); + } + } + } +} +# +# Find all the versions between $prevversion and $thisversion +# my %versions = (); foreach my $sw (sort(keys(%softwares))) { foreach my $vs (sort(keys(%{$softwares{$sw}{versions}}))) { @@ -239,9 +278,12 @@ foreach my $sw (sort(keys(%softwares))) $branch ne $thisversion); my $date = $softwares{$sw}{versions}{$vs}{mfc}{$branch}; - next if ($date lt $branches{$prevversion} || - $date gt $branches{$thisversion}); -# print "$date - $branch - $vs -> $sw\n"; +# next if ($date lt $branches{$prevversion} || +# $date gt $branches{$thisversion}); + if ($DEBUG) { + print "Found $sw $vs on $date\n"; + # lbetween $date - $branch - $vs -> $sw\n"; + } if (!defined $versions{$sw}{f_date} || $versions{$sw}{f_date} ge $date) { $versions{$sw}{f_date} = $date; @@ -256,15 +298,28 @@ foreach my $sw (sort(keys(%softwares))) } } -foreach my $sw (sort(keys(%versions))) { - my $a = $softwares{$sw}{desc}; - print "\n"; - print "\n"; - print "\n"; -} +#print Dumper(%versions); +#exit; -print "$CONTRIBENT") or + die("Cannot open $CONTRIBENT for writing"); + foreach my $sw (sort(keys(%versions))) { + my $a = $softwares{$sw}{desc}; + print FOUT < + + +EOF + } + + print FOUT "\n" if ($i == 0); + print FOUT "\">\n"; + close(FOUT); } -print "\">\n"; Modified: user/edwin/releasenotes/contrib.xml ============================================================================== --- user/edwin/releasenotes/contrib.xml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/contrib.xml Fri Oct 31 11:47:51 2008 (r184503) @@ -1,14 +1,41 @@ + + - 2007-10-11 + + 2007-10-10 2007-12-22 + 2005-07-11 2005-10-09 2006-04-30 2006-11-14 - 2007-10-24 + 2007-11-24 2008-10-02 - 2003-01-15 + + + 2000-10-29 + 2002-12-13 + 2003-05-31 + 2003-12-07 + 2004-10-16 + 2004-04-20 + 2006-05-12 + + 2000-03-13 + 2001-04-21 + 2001-08-17 + 2002-02-04 + 2002-07-03 + 2002-10-05 + 2003-03-22 + 2003-10-22 + 2004-04-21 + 2004-12-18 + + 1999-01-21 + 1995-06-13 + 1996-11-19 @@ -99,43 +126,54 @@ 2008-09-16 2008-09-16 2008-09-16 + 2008-09-16 2008-08-08 2008-08-08 2008-08-08 2008-08-15 + 2008-03-25 2008-08-08 2008-08-08 2008-08-08 2008-08-15 + 2008-03-25 2008-08-08 2008-08-08 2008-08-08 2008-08-15 + 2008-03-25 2008-03-25 2008-08-08 2008-03-25 2008-03-25 + 2008-03-25 + 2008-03-25 2008-03-09 2008-03-09 2008-03-09 2008-03-09 + 2008-03-09 + 2008-03-10 2008-01-01 2008-01-01 2008-01-06 + 2008-01-06 2008-01-06 2008-01-06 + 2008-01-06 + 2008-01-07 2007-12-04 @@ -149,11 +187,15 @@ 2007-10-09 2007-10-09 2007-10-18 + 2007-10-18 + 2007-10-18 2007-08-24 2007-08-24 2007-09-02 + 2007-09-02 + 2007-09-18 2007-05-21 @@ -163,76 +205,94 @@ 2006-05-11 2006-05-21 2006-10-16 + 2006-10-13 + 2006-10-13 2006-05-11 - x + 2005-05-11 2005-05-11 + 2006-05-12 2005-12-27 2005-12-27 2005-12-27 + 2005-12-27 2005-12-22 2005-12-22 2005-12-22 + 2005-12-22 2005-08-26 2005-08-29 2005-12-22 + 2005-08-29 2005-08-26 2005-08-27 2005-12-22 + 2005-08-28 2004-12-03 2004-12-03 2004-12-02 + 2004-12-02 + 2004-12-02 2004-10-18 - 2004-10-18 + 2004-10-23 + 2004-10-23 + 2004-12-02 2003-10-14 - 2003-10-15 + 2003-10-15 + 2003-10-16 2003-04-28 - 2003-04-29 + 2003-04-28 + 2003-04-28 2002-10-16 - 2002-10-16 + 2002-10-16 + 2002-10-21 2002-04-04 - 2002-04-05 + 2002-04-05 + 2002-04-05 2001-11-10 - 2001-11-10 + 2001-11-16 + 2001-11-16 2001-04-06 - 2001-04-07 + 2001-04-07 + 2001-11-16 2000-10-25 - 2000-10-26 + 2000-10-26 2000-03-29 - 2000-08-11 + 2000-08-11 2000-03-29 - 2000-03-30 + 2000-03-30 + 2000-03-30 1999-02-02 Modified: user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/relnotes/Makefile ============================================================================== --- user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/relnotes/Makefile Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/relnotes/Makefile Fri Oct 31 11:47:51 2008 (r184503) @@ -22,8 +22,8 @@ SRCS+= article.sgml SRCS+= contrib.ent CLEANFILES+= contrib.ent -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl > contrib.ent +contrib.ent: ${RELN_ROOT}/../../../contrib.xml ${RELN_ROOT}/share/sgml/release.ent + ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl -x ${RELN_ROOT}/../../../contrib.xml -r ${RELN_ROOT}/share/sgml/release.ent -o contrib.ent URL_RELPREFIX?= ../../../.. Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:47:51 2008 (r184503) @@ -8,18 +8,12 @@ DESTDIR?= ${DOCDIR}/relnotes DESTDIR?= ${DOCDIR}/en_US.ISO8859-1/relnotes .endif -DOC?= article -FORMATS?= html -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -JADEFLAGS+= -V %generate-article-toc% - CLEANFILES+= contrib.ent SRCS+= contrib.ent -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl $? > contrib.ent +all: contrib.ent +contrib.ent: ${RELN_ROOT}/../../../contrib.xml ${RELN_ROOT}/share/sgml/release.ent + ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl -x ${RELN_ROOT}/../../../contrib.xml -r ${RELN_ROOT}/share/sgml/release.ent -o contrib.ent URL_RELPREFIX?= ../../../../.. Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -1427,6 +1427,11 @@ moused_ums0_port="/dev/ums0" Contributed Software + &contrib.softwares; + + + + Expected Contributed Software awk has been updated from the 7 February 2004 release to the 24 April 2005 release. Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:47:51 2008 (r184503) @@ -8,18 +8,12 @@ DESTDIR?= ${DOCDIR}/relnotes DESTDIR?= ${DOCDIR}/en_US.ISO8859-1/relnotes .endif -DOC?= article -FORMATS?= html -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -JADEFLAGS+= -V %generate-article-toc% - CLEANFILES+= contrib.ent SRCS+= contrib.ent -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl $? > contrib.ent +all: contrib.ent +contrib.ent: ${RELN_ROOT}/../../../contrib.xml ${RELN_ROOT}/share/sgml/release.ent + ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl -x ${RELN_ROOT}/../../../contrib.xml -r ${RELN_ROOT}/share/sgml/release.ent -o contrib.ent URL_RELPREFIX?= ../../../../.. Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -636,8 +636,13 @@ geli_da1s3a_keyfile0_name="/boot/keys/da - + Contributed Software + &contrib.softwares; + + + + Expected Contributed Software BIND has been updated from 9.3.1 to 9.3.2. Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:47:51 2008 (r184503) @@ -8,18 +8,12 @@ DESTDIR?= ${DOCDIR}/relnotes DESTDIR?= ${DOCDIR}/en_US.ISO8859-1/relnotes .endif -DOC?= article -FORMATS?= html -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -JADEFLAGS+= -V %generate-article-toc% - CLEANFILES+= contrib.ent SRCS+= contrib.ent -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl $? > contrib.ent +all: contrib.ent +contrib.ent: ${RELN_ROOT}/../../../contrib.xml ${RELN_ROOT}/share/sgml/release.ent + ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl -x ${RELN_ROOT}/../../../contrib.xml -r ${RELN_ROOT}/share/sgml/release.ent -o contrib.ent URL_RELPREFIX?= ../../../../.. Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -555,6 +555,11 @@ Contributed Software + &contrib.softwares; + + + + Expected Contributed Software BIND has been updated from 9.3.1 to 9.3.3. Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:47:51 2008 (r184503) @@ -8,18 +8,12 @@ DESTDIR?= ${DOCDIR}/relnotes DESTDIR?= ${DOCDIR}/en_US.ISO8859-1/relnotes .endif -DOC?= article -FORMATS?= html -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -JADEFLAGS+= -V %generate-article-toc% - CLEANFILES+= contrib.ent SRCS+= contrib.ent -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl $? > contrib.ent +all: contrib.ent +contrib.ent: ${RELN_ROOT}/../../../contrib.xml ${RELN_ROOT}/share/sgml/release.ent + ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl -x ${RELN_ROOT}/../../../contrib.xml -r ${RELN_ROOT}/share/sgml/release.ent -o contrib.ent URL_RELPREFIX?= ../../../../.. Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -380,6 +380,11 @@ Contributed Software + &contrib.softwares; + + + + Expected Contributed Software awk has been updated from the 24 April 2005 release to the 1 May 2007 release. Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/powerpc/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/powerpc/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/powerpc/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/sparc64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/alpha/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/amd64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/Makefile Fri Oct 31 11:47:51 2008 (r184503) @@ -8,18 +8,12 @@ DESTDIR?= ${DOCDIR}/relnotes DESTDIR?= ${DOCDIR}/en_US.ISO8859-1/relnotes .endif -DOC?= article -FORMATS?= html -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -JADEFLAGS+= -V %generate-article-toc% - CLEANFILES+= contrib.ent SRCS+= contrib.ent -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl $? > contrib.ent +all: contrib.ent +contrib.ent: ${RELN_ROOT}/../../../contrib.xml ${RELN_ROOT}/share/sgml/release.ent + ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl -x ${RELN_ROOT}/../../../contrib.xml -r ${RELN_ROOT}/share/sgml/release.ent -o contrib.ent URL_RELPREFIX?= ../../../../.. Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -198,6 +198,11 @@ Contributed Software + &contrib.softwares; + + + + Expected Contributed Software bzip2 has been updated from 1.0.4 to 1.0.5. Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/i386/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:27:54 2008 (r184502) +++ user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/ia64/article.sgml Fri Oct 31 11:47:51 2008 (r184503) @@ -8,6 +8,8 @@ %release; %sections; + +%contrib; Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/pc98/article.sgml Fri Oct 31 11:27:54 2008 (r184502) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Fri Oct 31 18:27:30 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C4461065677; Fri, 31 Oct 2008 18:27:30 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4C44B8FC14; Fri, 31 Oct 2008 18:27:30 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9VIRUrk087295; Fri, 31 Oct 2008 18:27:30 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9VIRUEP087294; Fri, 31 Oct 2008 18:27:30 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200810311827.m9VIRUEP087294@svn.freebsd.org> From: Warner Losh Date: Fri, 31 Oct 2008 18:27:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184513 - user X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Oct 2008 18:27:30 -0000 Author: imp Date: Fri Oct 31 18:27:30 2008 New Revision: 184513 URL: http://svn.freebsd.org/changeset/base/184513 Log: Add a missing /sys which is implied by later comments. Modified: user/GUIDELINES.txt Modified: user/GUIDELINES.txt ============================================================================== --- user/GUIDELINES.txt Fri Oct 31 15:56:38 2008 (r184512) +++ user/GUIDELINES.txt Fri Oct 31 18:27:30 2008 (r184513) @@ -65,7 +65,7 @@ Then check it out: $ svn co $BASE/projects/ia65 To integrate changes from head into your branch: - $ cd ia65 ; svn update; svn status | read output! Should preferably be clean. + $ cd ia65/sys ; svn update; svn status | read output! Should preferably be clean. (you may prefer to do merges in a second, clean checkout. It will be easier!) $ svn merge $BASE/head/sys (this merges head/sys/* into ., which is projects/ia65/sys) From owner-svn-src-user@FreeBSD.ORG Fri Oct 31 18:40:35 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D4E911065670; Fri, 31 Oct 2008 18:40:35 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C1F218FC22; Fri, 31 Oct 2008 18:40:35 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id m9VIeZbV087591; Fri, 31 Oct 2008 18:40:35 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id m9VIeZ6F087584; Fri, 31 Oct 2008 18:40:35 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200810311840.m9VIeZ6F087584@svn.freebsd.org> From: Warner Losh Date: Fri, 31 Oct 2008 18:40:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184514 - in user/imp/newcard/sys: . amd64/amd64 compat/linux geom i386/i386 security/audit security/mac security/mac_bsdextended X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Oct 2008 18:40:35 -0000 Author: imp Date: Fri Oct 31 18:40:35 2008 New Revision: 184514 URL: http://svn.freebsd.org/changeset/base/184514 Log: Merging r184495 through r184513 Modified: user/imp/newcard/sys/ (props changed) user/imp/newcard/sys/amd64/amd64/dump_machdep.c user/imp/newcard/sys/amd64/amd64/minidump_machdep.c user/imp/newcard/sys/compat/linux/linux_emul.c user/imp/newcard/sys/geom/geom_disk.c user/imp/newcard/sys/i386/i386/dump_machdep.c user/imp/newcard/sys/i386/i386/minidump_machdep.c user/imp/newcard/sys/security/audit/audit_pipe.c user/imp/newcard/sys/security/mac/mac_cred.c (props changed) user/imp/newcard/sys/security/mac_bsdextended/ugidfw_system.c (props changed) user/imp/newcard/sys/security/mac_bsdextended/ugidfw_vnode.c (props changed) Modified: user/imp/newcard/sys/amd64/amd64/dump_machdep.c ============================================================================== --- user/imp/newcard/sys/amd64/amd64/dump_machdep.c Fri Oct 31 18:27:30 2008 (r184513) +++ user/imp/newcard/sys/amd64/amd64/dump_machdep.c Fri Oct 31 18:40:35 2008 (r184514) @@ -165,7 +165,7 @@ cb_dumpdata(struct md_pa *mdp, int seqnr va = 0; pgs = mdp->md_size / PAGE_SIZE; pa = mdp->md_start; - maxdumppgs = di->maxiosize / PAGE_SIZE; + maxdumppgs = min(di->maxiosize / PAGE_SIZE, MAXDUMPPGS); if (maxdumppgs == 0) /* seatbelt */ maxdumppgs = 1; Modified: user/imp/newcard/sys/amd64/amd64/minidump_machdep.c ============================================================================== --- user/imp/newcard/sys/amd64/amd64/minidump_machdep.c Fri Oct 31 18:27:30 2008 (r184513) +++ user/imp/newcard/sys/amd64/amd64/minidump_machdep.c Fri Oct 31 18:40:35 2008 (r184514) @@ -104,7 +104,7 @@ blk_write(struct dumperinfo *di, char *p int error, i, c; u_int maxdumpsz; - maxdumpsz = di->maxiosize; + maxdumpsz = min(di->maxiosize, MAXDUMPPGS * PAGE_SIZE); if (maxdumpsz == 0) /* seatbelt */ maxdumpsz = PAGE_SIZE; error = 0; Modified: user/imp/newcard/sys/compat/linux/linux_emul.c ============================================================================== --- user/imp/newcard/sys/compat/linux/linux_emul.c Fri Oct 31 18:27:30 2008 (r184513) +++ user/imp/newcard/sys/compat/linux/linux_emul.c Fri Oct 31 18:40:35 2008 (r184514) @@ -235,11 +235,11 @@ linux_proc_exit(void *arg __unused, stru continue; em = em_find(q, EMUL_DOLOCK); KASSERT(em != NULL, ("linux_reparent: emuldata not found: %i\n", q->p_pid)); - if (em->pdeath_signal != 0) { - PROC_LOCK(q); + PROC_LOCK(q); + if ((q->p_flag & P_WEXIT) == 0 && em->pdeath_signal != 0) { psignal(q, em->pdeath_signal); - PROC_UNLOCK(q); } + PROC_UNLOCK(q); EMUL_UNLOCK(&emul_lock); } sx_xunlock(&proctree_lock); Modified: user/imp/newcard/sys/geom/geom_disk.c ============================================================================== --- user/imp/newcard/sys/geom/geom_disk.c Fri Oct 31 18:27:30 2008 (r184513) +++ user/imp/newcard/sys/geom/geom_disk.c Fri Oct 31 18:40:35 2008 (r184514) @@ -179,7 +179,7 @@ g_disk_kerneldump(struct bio *bp, struct di.dumper = dp->d_dump; di.priv = dp; di.blocksize = dp->d_sectorsize; - di.maxiosize = min(dp->d_maxsize, MAXDUMPPGS * PAGE_SIZE); + di.maxiosize = dp->d_maxsize; di.mediaoffset = gkd->offset; if ((gkd->offset + gkd->length) > dp->d_mediasize) gkd->length = dp->d_mediasize - gkd->offset; Modified: user/imp/newcard/sys/i386/i386/dump_machdep.c ============================================================================== --- user/imp/newcard/sys/i386/i386/dump_machdep.c Fri Oct 31 18:27:30 2008 (r184513) +++ user/imp/newcard/sys/i386/i386/dump_machdep.c Fri Oct 31 18:40:35 2008 (r184514) @@ -165,7 +165,7 @@ cb_dumpdata(struct md_pa *mdp, int seqnr va = 0; pgs = mdp->md_size / PAGE_SIZE; pa = mdp->md_start; - maxdumppgs = di->maxiosize / PAGE_SIZE; + maxdumppgs = min(di->maxiosize / PAGE_SIZE, MAXDUMPPGS); if (maxdumppgs == 0) /* seatbelt */ maxdumppgs = 1; Modified: user/imp/newcard/sys/i386/i386/minidump_machdep.c ============================================================================== --- user/imp/newcard/sys/i386/i386/minidump_machdep.c Fri Oct 31 18:27:30 2008 (r184513) +++ user/imp/newcard/sys/i386/i386/minidump_machdep.c Fri Oct 31 18:40:35 2008 (r184514) @@ -102,7 +102,7 @@ blk_write(struct dumperinfo *di, char *p int error, i, c; u_int maxdumpsz; - maxdumpsz = di->maxiosize; + maxdumpsz = min(di->maxiosize, MAXDUMPPGS * PAGE_SIZE); if (maxdumpsz == 0) /* seatbelt */ maxdumpsz = PAGE_SIZE; error = 0; Modified: user/imp/newcard/sys/security/audit/audit_pipe.c ============================================================================== --- user/imp/newcard/sys/security/audit/audit_pipe.c Fri Oct 31 18:27:30 2008 (r184513) +++ user/imp/newcard/sys/security/audit/audit_pipe.c Fri Oct 31 18:40:35 2008 (r184514) @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -84,6 +85,7 @@ static MALLOC_DEFINE(M_AUDIT_PIPE_PRESEL struct audit_pipe_entry { void *ape_record; u_int ape_record_len; + u_int ape_record_offset; TAILQ_ENTRY(audit_pipe_entry) ape_queue; }; @@ -120,7 +122,15 @@ struct audit_pipe { /* * Per-pipe mutex protecting most fields in this data structure. */ - struct mtx ap_lock; + struct mtx ap_mtx; + + /* + * Per-pipe sleep lock serializing user-generated reads and flushes. + * uiomove() is called to copy out the current head record's data + * while the record remains in the queue, so we prevent other threads + * from removing it using this lock. + */ + struct sx ap_sx; /* * Condition variable to signal when data has been delivered to a @@ -134,7 +144,6 @@ struct audit_pipe { u_int64_t ap_inserts; /* Records added. */ u_int64_t ap_reads; /* Records read. */ u_int64_t ap_drops; /* Records dropped. */ - u_int64_t ap_truncates; /* Records too long. */ /* * Fields relating to pipe interest: global masks for unmatched @@ -147,7 +156,9 @@ struct audit_pipe { TAILQ_HEAD(, audit_pipe_preselect) ap_preselect_list; /* - * Current pending record list. + * Current pending record list. Protected by a combination of ap_mtx + * and ap_sx. Note particularly that *both* locks are required to + * remove a record from the head of the queue, as an in-progress read * may sleep while copying and therefore cannot hold ap_mtx. */ TAILQ_HEAD(, audit_pipe_entry) ap_queue; @@ -157,13 +168,19 @@ struct audit_pipe { TAILQ_ENTRY(audit_pipe) ap_list; }; -#define AUDIT_PIPE_LOCK(ap) mtx_lock(&(ap)->ap_lock) -#define AUDIT_PIPE_LOCK_ASSERT(ap) mtx_assert(&(ap)->ap_lock, MA_OWNED) -#define AUDIT_PIPE_LOCK_DESTROY(ap) mtx_destroy(&(ap)->ap_lock) -#define AUDIT_PIPE_LOCK_INIT(ap) mtx_init(&(ap)->ap_lock, \ - "audit_pipe_lock", NULL, MTX_DEF) -#define AUDIT_PIPE_UNLOCK(ap) mtx_unlock(&(ap)->ap_lock) -#define AUDIT_PIPE_MTX(ap) (&(ap)->ap_lock) +#define AUDIT_PIPE_LOCK(ap) mtx_lock(&(ap)->ap_mtx) +#define AUDIT_PIPE_LOCK_ASSERT(ap) mtx_assert(&(ap)->ap_mtx, MA_OWNED) +#define AUDIT_PIPE_LOCK_DESTROY(ap) mtx_destroy(&(ap)->ap_mtx) +#define AUDIT_PIPE_LOCK_INIT(ap) mtx_init(&(ap)->ap_mtx, \ + "audit_pipe_mtx", NULL, MTX_DEF) +#define AUDIT_PIPE_UNLOCK(ap) mtx_unlock(&(ap)->ap_mtx) +#define AUDIT_PIPE_MTX(ap) (&(ap)->ap_mtx) + +#define AUDIT_PIPE_SX_LOCK_DESTROY(ap) sx_destroy(&(ap)->ap_sx) +#define AUDIT_PIPE_SX_LOCK_INIT(ap) sx_init(&(ap)->ap_sx, "audit_pipe_sx") +#define AUDIT_PIPE_SX_XLOCK_ASSERT(ap) sx_assert(&(ap)->ap_sx, SA_XLOCKED) +#define AUDIT_PIPE_SX_XLOCK_SIG(ap) sx_xlock_sig(&(ap)->ap_sx) +#define AUDIT_PIPE_SX_XUNLOCK(ap) sx_xunlock(&(ap)->ap_sx) /* * Global list of audit pipes, rwlock to protect it. Individual record @@ -457,6 +474,7 @@ audit_pipe_append(struct audit_pipe *ap, bcopy(record, ape->ape_record, record_len); ape->ape_record_len = record_len; + ape->ape_record_offset = 0; TAILQ_INSERT_TAIL(&ap->ap_queue, ape, ape_queue); ap->ap_inserts++; @@ -530,26 +548,6 @@ audit_pipe_submit_user(void *record, u_i } /* - * Pop the next record off of an audit pipe. - */ -static struct audit_pipe_entry * -audit_pipe_pop(struct audit_pipe *ap) -{ - struct audit_pipe_entry *ape; - - AUDIT_PIPE_LOCK_ASSERT(ap); - - ape = TAILQ_FIRST(&ap->ap_queue); - KASSERT((ape == NULL && ap->ap_qlen == 0) || - (ape != NULL && ap->ap_qlen != 0), ("audit_pipe_pop: qlen")); - if (ape == NULL) - return (NULL); - TAILQ_REMOVE(&ap->ap_queue, ape, ape_queue); - ap->ap_qlen--; - return (ape); -} - -/* * Allocate a new audit pipe. Connects the pipe, on success, to the global * list and updates statistics. */ @@ -568,6 +566,7 @@ audit_pipe_alloc(void) knlist_init(&ap->ap_selinfo.si_note, AUDIT_PIPE_MTX(ap), NULL, NULL, NULL); AUDIT_PIPE_LOCK_INIT(ap); + AUDIT_PIPE_SX_LOCK_INIT(ap); cv_init(&ap->ap_cv, "audit_pipe"); /* @@ -626,6 +625,7 @@ audit_pipe_free(struct audit_pipe *ap) audit_pipe_preselect_flush_locked(ap); audit_pipe_flush(ap); cv_destroy(&ap->ap_cv); + AUDIT_PIPE_SX_LOCK_DESTROY(ap); AUDIT_PIPE_LOCK_DESTROY(ap); knlist_destroy(&ap->ap_selinfo.si_note); TAILQ_REMOVE(&audit_pipe_list, ap, ap_list); @@ -754,7 +754,8 @@ audit_pipe_ioctl(struct cdev *dev, u_lon AUDIT_PIPE_LOCK(ap); if (TAILQ_FIRST(&ap->ap_queue) != NULL) *(int *)data = - TAILQ_FIRST(&ap->ap_queue)->ape_record_len; + TAILQ_FIRST(&ap->ap_queue)->ape_record_len - + TAILQ_FIRST(&ap->ap_queue)->ape_record_offset; else *(int *)data = 0; AUDIT_PIPE_UNLOCK(ap); @@ -888,9 +889,12 @@ audit_pipe_ioctl(struct cdev *dev, u_lon break; case AUDITPIPE_FLUSH: + if (AUDIT_PIPE_SX_XLOCK_SIG(ap) != 0) + return (EINTR); AUDIT_PIPE_LOCK(ap); audit_pipe_flush(ap); AUDIT_PIPE_UNLOCK(ap); + AUDIT_PIPE_SX_XUNLOCK(ap); error = 0; break; @@ -915,7 +919,7 @@ audit_pipe_ioctl(struct cdev *dev, u_lon break; case AUDITPIPE_GET_TRUNCATES: - *(u_int *)data = ap->ap_truncates; + *(u_int *)data = 0; error = 0; break; @@ -945,45 +949,68 @@ audit_pipe_read(struct cdev *dev, struct { struct audit_pipe_entry *ape; struct audit_pipe *ap; + u_int toread; int error; ap = dev->si_drv1; KASSERT(ap != NULL, ("audit_pipe_read: ap == NULL")); + /* + * We hold an sx(9) lock over read and flush because we rely on the + * stability of a record in the queue during uiomove(9). + */ + if (AUDIT_PIPE_SX_XLOCK_SIG(ap) != 0) + return (EINTR); AUDIT_PIPE_LOCK(ap); - do { - /* - * Wait for a record that fits into the read buffer, dropping - * records that would be truncated if actually passed to the - * process. This helps maintain the discreet record read - * interface. - */ - while ((ape = audit_pipe_pop(ap)) == NULL) { - if (ap->ap_flags & AUDIT_PIPE_NBIO) { - AUDIT_PIPE_UNLOCK(ap); - return (EAGAIN); - } - error = cv_wait_sig(&ap->ap_cv, AUDIT_PIPE_MTX(ap)); - if (error) { - AUDIT_PIPE_UNLOCK(ap); - return (error); - } + while (TAILQ_EMPTY(&ap->ap_queue)) { + if (ap->ap_flags & AUDIT_PIPE_NBIO) { + AUDIT_PIPE_UNLOCK(ap); + AUDIT_PIPE_SX_XUNLOCK(ap); + return (EAGAIN); } - if (ape->ape_record_len <= uio->uio_resid) - break; - audit_pipe_entry_free(ape); - ap->ap_truncates++; - } while (1); + error = cv_wait_sig(&ap->ap_cv, AUDIT_PIPE_MTX(ap)); + if (error) { + AUDIT_PIPE_UNLOCK(ap); + AUDIT_PIPE_SX_XUNLOCK(ap); + return (error); + } + } + + /* + * Copy as many remaining bytes from the current record to userspace + * as we can. + * + * Note: we rely on the SX lock to maintain ape's stability here. + */ ap->ap_reads++; + ape = TAILQ_FIRST(&ap->ap_queue); + toread = MIN(ape->ape_record_len - ape->ape_record_offset, + uio->uio_resid); AUDIT_PIPE_UNLOCK(ap); + error = uiomove((char *)ape->ape_record + ape->ape_record_offset, + toread, uio); + if (error) { + AUDIT_PIPE_SX_XUNLOCK(ap); + return (error); + } /* - * Now read record to user space memory. Even if the read is short, - * we abandon the remainder of the record, supporting only discreet - * record reads. + * If the copy succeeded, update book-keeping, and if no bytes remain + * in the current record, free it. */ - error = uiomove(ape->ape_record, ape->ape_record_len, uio); - audit_pipe_entry_free(ape); + AUDIT_PIPE_LOCK(ap); + KASSERT(TAILQ_FIRST(&ap->ap_queue) == ape, + ("audit_pipe_read: queue out of sync after uiomove")); + ape->ape_record_offset += toread; + if (ape->ape_record_offset == ape->ape_record_len) { + TAILQ_REMOVE(&ap->ap_queue, ape, ape_queue); + ap->ap_qlen--; + } else + ape = NULL; + AUDIT_PIPE_UNLOCK(ap); + AUDIT_PIPE_SX_XUNLOCK(ap); + if (ape != NULL) + audit_pipe_entry_free(ape); return (error); } @@ -1052,7 +1079,7 @@ audit_pipe_kqread(struct knote *kn, long ape = TAILQ_FIRST(&ap->ap_queue); KASSERT(ape != NULL, ("audit_pipe_kqread: ape == NULL")); - kn->kn_data = ape->ape_record_len; + kn->kn_data = ape->ape_record_len - ape->ape_record_offset; return (1); } else { kn->kn_data = 0; From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 06:50:52 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EBF60106567A; Sat, 1 Nov 2008 06:50:52 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DB2408FC16; Sat, 1 Nov 2008 06:50:52 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA16oqd5001602; Sat, 1 Nov 2008 06:50:52 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA16oqfH001601; Sat, 1 Nov 2008 06:50:52 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200811010650.mA16oqfH001601@svn.freebsd.org> From: Kip Macy Date: Sat, 1 Nov 2008 06:50:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184518 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 06:50:53 -0000 Author: kmacy Date: Sat Nov 1 06:50:52 2008 New Revision: 184518 URL: http://svn.freebsd.org/changeset/base/184518 Log: use RTFREE_LOCKED as the rtentry is already locked Modified: user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c Sat Nov 1 06:48:28 2008 (r184517) +++ user/kmacy/HEAD_fast_xmit/sys/net/radix_mpath.c Sat Nov 1 06:50:52 2008 (r184518) @@ -298,7 +298,7 @@ rtalloc_mpath_fib(struct route *ro, u_in return; } - RTFREE(ro->ro_rt); + RTFREE_LOCKED(ro->ro_rt); ro->ro_rt = (struct rtentry *)rn; RT_LOCK(ro->ro_rt); RT_ADDREF(ro->ro_rt); From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 06:58:00 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 15EC7106567F; Sat, 1 Nov 2008 06:58:00 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04B428FC1A; Sat, 1 Nov 2008 06:58:00 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA16vxci001755; Sat, 1 Nov 2008 06:57:59 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA16vxGT001754; Sat, 1 Nov 2008 06:57:59 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200811010657.mA16vxGT001754@svn.freebsd.org> From: Kip Macy Date: Sat, 1 Nov 2008 06:57:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184519 - user/kmacy/HEAD_fast_xmit/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 06:58:00 -0000 Author: kmacy Date: Sat Nov 1 06:57:59 2008 New Revision: 184519 URL: http://svn.freebsd.org/changeset/base/184519 Log: add debugging to forwarding path Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Sat Nov 1 06:50:52 2008 (r184518) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Sat Nov 1 06:57:59 2008 (r184519) @@ -1325,6 +1325,9 @@ ip_forward(struct mbuf *m, int srcrt) return; #define RIA(ri) ((struct in_ifaddr *)((ri)->ri_ifa)) + printf("lookup successful\n"); + + ia = RIA(&ri); /* * Save the IP header and at most 8 bytes of the payload, @@ -1384,6 +1387,7 @@ ip_forward(struct mbuf *m, int srcrt) if (!srcrt && V_ipsendredirects && ia->ia_ifp == m->m_pkthdr.rcvif) { struct sockaddr_in *sin; + printf("trying redirect \n"); sin = (struct sockaddr_in *)&ri.ri_dst; sin->sin_family = AF_INET; sin->sin_len = sizeof(*sin); @@ -1406,6 +1410,7 @@ ip_forward(struct mbuf *m, int srcrt) * Try to cache the route MTU from ip_output so we can consider it for * the ICMP_UNREACH_NEEDFRAG "Next-Hop MTU" field described in RFC1191. */ + printf("passing to ip_output\n"); error = ip_output(m, NULL, (struct route *)&ri, IP_FORWARDING|IP_RTINFO, NULL, NULL); From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 17:55:29 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E46C41065679; Sat, 1 Nov 2008 17:55:29 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D28168FC0A; Sat, 1 Nov 2008 17:55:29 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1HtTuS015170; Sat, 1 Nov 2008 17:55:29 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1HtTml015169; Sat, 1 Nov 2008 17:55:29 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200811011755.mA1HtTml015169@svn.freebsd.org> From: Kip Macy Date: Sat, 1 Nov 2008 17:55:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184525 - user/kmacy/HEAD_fast_xmit/sys/net X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 17:55:30 -0000 Author: kmacy Date: Sat Nov 1 17:55:29 2008 New Revision: 184525 URL: http://svn.freebsd.org/changeset/base/184525 Log: - arpresolve gateway address for gateway routes - simplify gateway validation check to fix case where the fl entry lock wasn't getting droppd Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Modified: user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Sat Nov 1 17:02:01 2008 (r184524) +++ user/kmacy/HEAD_fast_xmit/sys/net/flowtable.c Sat Nov 1 17:55:29 2008 (r184525) @@ -534,9 +534,7 @@ route_to_rtentry_info(struct route *ro, if ((rt->rt_flags & RTF_GATEWAY) && !IN_MULTICAST(sin->sin_addr.s_addr)) memcpy(&ri->ri_dst, rt->rt_gateway, sizeof(struct sockaddr)); else - memcpy(&ri->ri_dst, sin, sizeof(struct sockaddr)); - - ((struct sockaddr *)&ri->ri_dst)->sa_family = AF_INET; + memcpy(&ri->ri_dst, sin, sizeof(struct sockaddr_in)); if (desten) { memcpy(ri->ri_desten, desten, ETHER_ADDR_LEN); @@ -565,6 +563,15 @@ flowtable_key_equal(struct flentry *fle, return (1); } +static __inline int +gw_valid(struct flentry *fle) +{ + return ((fle->f_rt->rt_flags & RTF_GATEWAY) == 0 || + ((fle->f_rt->rt_flags & RTF_GATEWAY) && + (fle->f_rt->rt_gwroute->rt_flags & RTF_UP))); +} + + int flowtable_lookup(struct flowtable *ft, struct mbuf *m, struct rtentry_info *ri) @@ -605,12 +612,8 @@ flowtable_lookup(struct flowtable *ft, s && flowtable_key_equal(fle, key, flags) && (proto == fle->f_proto) && (fle->f_rt->rt_flags & RTF_UP) - && (fle->f_uptime > fle->f_rt->rt_llinfo_uptime)) { - - if ((fle->f_rt->rt_flags & RTF_GATEWAY) && - ((fle->f_rt->rt_gwroute->rt_flags & RTF_UP) == 0)) - goto uncached; - + && (fle->f_uptime > fle->f_rt->rt_llinfo_uptime) + && gw_valid(fle)) { fle->f_uptime = time_uptime; fle->f_flags |= flags; fle->f_rt->rt_rmx.rmx_pksent++; @@ -637,8 +640,12 @@ uncached: if (ro.ro_rt == NULL) error = ENETUNREACH; else { - error = arpresolve(ro.ro_rt->rt_ifp, ro.ro_rt, NULL, - &ro.ro_dst, desten); + if (ro.ro_rt->rt_flags & RTF_GATEWAY) + error = arpresolve(ro.ro_rt->rt_ifp, ro.ro_rt, + NULL, ro.ro_rt->rt_gateway, desten); + else + error = arpresolve(ro.ro_rt->rt_ifp, ro.ro_rt, + NULL, &ro.ro_dst, desten); route_to_rtentry_info(&ro, error ? NULL : desten, ri); if (error == 0 && cache) From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 17:57:20 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA0AB106564A; Sat, 1 Nov 2008 17:57:20 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B814A8FC18; Sat, 1 Nov 2008 17:57:20 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1HvKWx015234; Sat, 1 Nov 2008 17:57:20 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1HvKIo015232; Sat, 1 Nov 2008 17:57:20 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200811011757.mA1HvKIo015232@svn.freebsd.org> From: Kip Macy Date: Sat, 1 Nov 2008 17:57:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184526 - user/kmacy/HEAD_fast_xmit/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 17:57:20 -0000 Author: kmacy Date: Sat Nov 1 17:57:20 2008 New Revision: 184526 URL: http://svn.freebsd.org/changeset/base/184526 Log: remove debug printf statements Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Sat Nov 1 17:55:29 2008 (r184525) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_input.c Sat Nov 1 17:57:20 2008 (r184526) @@ -1324,9 +1324,6 @@ ip_forward(struct mbuf *m, int srcrt) } else if (error) return; #define RIA(ri) ((struct in_ifaddr *)((ri)->ri_ifa)) - - printf("lookup successful\n"); - ia = RIA(&ri); /* @@ -1387,7 +1384,6 @@ ip_forward(struct mbuf *m, int srcrt) if (!srcrt && V_ipsendredirects && ia->ia_ifp == m->m_pkthdr.rcvif) { struct sockaddr_in *sin; - printf("trying redirect \n"); sin = (struct sockaddr_in *)&ri.ri_dst; sin->sin_family = AF_INET; sin->sin_len = sizeof(*sin); @@ -1410,7 +1406,6 @@ ip_forward(struct mbuf *m, int srcrt) * Try to cache the route MTU from ip_output so we can consider it for * the ICMP_UNREACH_NEEDFRAG "Next-Hop MTU" field described in RFC1191. */ - printf("passing to ip_output\n"); error = ip_output(m, NULL, (struct route *)&ri, IP_FORWARDING|IP_RTINFO, NULL, NULL); Modified: user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c ============================================================================== --- user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Sat Nov 1 17:55:29 2008 (r184525) +++ user/kmacy/HEAD_fast_xmit/sys/netinet/ip_output.c Sat Nov 1 17:57:20 2008 (r184526) @@ -135,9 +135,9 @@ ip_output(struct mbuf *m, struct mbuf *o M_SETFIB(m, inp->inp_inc.inc_fibnum); } - if (flags & IP_RTINFO) /* ugly interface overload */ + if (flags & IP_RTINFO) {/* ugly interface overload */ ri = (struct rtentry_info *)ro; - else { + } else { ri = &ipri; bzero(ri, sizeof (*ri)); if (ro) From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 21:49:32 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CDEA21065672; Sat, 1 Nov 2008 21:49:32 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BACE38FC16; Sat, 1 Nov 2008 21:49:32 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1LnWV0019679; Sat, 1 Nov 2008 21:49:32 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1LnWqa019669; Sat, 1 Nov 2008 21:49:32 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200811012149.mA1LnWqa019669@svn.freebsd.org> From: Warner Losh Date: Sat, 1 Nov 2008 21:49:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184535 - in user/imp/newcard/sys: . conf dev/adb kern modules/rl pci sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 21:49:33 -0000 Author: imp Date: Sat Nov 1 21:49:32 2008 New Revision: 184535 URL: http://svn.freebsd.org/changeset/base/184535 Log: r184514 through r184524 Added: user/imp/newcard/sys/kern/kern_cons.c - copied unchanged from r184524, head/sys/kern/kern_cons.c Deleted: user/imp/newcard/sys/kern/tty_cons.c Modified: user/imp/newcard/sys/ (props changed) user/imp/newcard/sys/conf/NOTES user/imp/newcard/sys/conf/files user/imp/newcard/sys/conf/options user/imp/newcard/sys/dev/adb/adb_mouse.c user/imp/newcard/sys/kern/tty.c user/imp/newcard/sys/modules/rl/Makefile user/imp/newcard/sys/pci/if_rl.c user/imp/newcard/sys/pci/if_rlreg.h user/imp/newcard/sys/sys/tty.h Modified: user/imp/newcard/sys/conf/NOTES ============================================================================== --- user/imp/newcard/sys/conf/NOTES Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/conf/NOTES Sat Nov 1 21:49:32 2008 (r184535) @@ -1875,6 +1875,7 @@ device my # Myson Fast Ethernet (MTD80 device nge # NatSemi DP83820 gigabit Ethernet device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 +options RL_TWISTER_ENABLE # Enable long cable compensation code device pcn # AMD Am79C97x PCI 10/100 NICs device sf # Adaptec AIC-6915 (``Starfire'') device sis # Silicon Integrated Systems SiS 900/SiS 7016 Modified: user/imp/newcard/sys/conf/files ============================================================================== --- user/imp/newcard/sys/conf/files Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/conf/files Sat Nov 1 21:49:32 2008 (r184535) @@ -1596,6 +1596,7 @@ kern/kern_alq.c optional alq kern/kern_clock.c standard kern/kern_condvar.c standard kern/kern_conf.c standard +kern/kern_cons.c standard kern/kern_cpu.c standard kern/kern_cpuset.c standard kern/kern_context.c standard @@ -1708,7 +1709,6 @@ kern/sysv_sem.c optional sysvsem kern/sysv_shm.c optional sysvshm kern/tty.c standard kern/tty_compat.c optional compat_43tty -kern/tty_cons.c standard kern/tty_info.c standard kern/tty_inq.c standard kern/tty_outq.c standard Modified: user/imp/newcard/sys/conf/options ============================================================================== --- user/imp/newcard/sys/conf/options Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/conf/options Sat Nov 1 21:49:32 2008 (r184535) @@ -672,6 +672,9 @@ ED_SIC opt_ed.h # bce driver BCE_DEBUG opt_bce.h +# rl driver +RL_TWISTER_ENABLE opt_rl.h + SOCKBUF_DEBUG opt_global.h # options for ubsec driver Modified: user/imp/newcard/sys/dev/adb/adb_mouse.c ============================================================================== --- user/imp/newcard/sys/dev/adb/adb_mouse.c Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/dev/adb/adb_mouse.c Sat Nov 1 21:49:32 2008 (r184535) @@ -382,6 +382,7 @@ ams_read(struct cdev *dev, struct uio *u struct adb_mouse_softc *sc; size_t len; int8_t outpacket[8]; + int error; sc = CDEV_GET_SOFTC(dev); if (sc == NULL) @@ -403,7 +404,11 @@ ams_read(struct cdev *dev, struct uio *u /* Otherwise, block on new data */ - cv_wait(&sc->sc_cv,&sc->sc_mtx); + error = cv_wait_sig(&sc->sc_cv, &sc->sc_mtx); + if (error) { + mtx_unlock(&sc->sc_mtx); + return (error); + } } sc->packet[0] = 1 << 7; Copied: user/imp/newcard/sys/kern/kern_cons.c (from r184524, head/sys/kern/kern_cons.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/imp/newcard/sys/kern/kern_cons.c Sat Nov 1 21:49:32 2008 (r184535, copy of r184524, head/sys/kern/kern_cons.c) @@ -0,0 +1,566 @@ +/*- + * Copyright (c) 1988 University of Utah. + * Copyright (c) 1991 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * the Systems Programming Group of the University of Utah Computer + * Science Department. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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. + * + * from: @(#)cons.c 7.2 (Berkeley) 5/9/91 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_ddb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +static MALLOC_DEFINE(M_TTYCONS, "tty console", "tty console handling"); + +struct cn_device { + STAILQ_ENTRY(cn_device) cnd_next; + struct consdev *cnd_cn; +}; + +#define CNDEVPATHMAX 32 +#define CNDEVTAB_SIZE 4 +static struct cn_device cn_devtab[CNDEVTAB_SIZE]; +static STAILQ_HEAD(, cn_device) cn_devlist = + STAILQ_HEAD_INITIALIZER(cn_devlist); + +int cons_avail_mask = 0; /* Bit mask. Each registered low level console + * which is currently unavailable for inpit + * (i.e., if it is in graphics mode) will have + * this bit cleared. + */ +static int cn_mute; +static char *consbuf; /* buffer used by `consmsgbuf' */ +static struct callout conscallout; /* callout for outputting to constty */ +struct msgbuf consmsgbuf; /* message buffer for console tty */ +static u_char console_pausing; /* pause after each line during probe */ +static char *console_pausestr= +""; +struct tty *constty; /* pointer to console "window" tty */ +static struct mtx cnputs_mtx; /* Mutex for cnputs(). */ +static int use_cnputs_mtx = 0; /* != 0 if cnputs_mtx locking reqd. */ + +static void constty_timeout(void *arg); + +static struct consdev cons_consdev; +DATA_SET(cons_set, cons_consdev); +SET_DECLARE(cons_set, struct consdev); + +void +cninit(void) +{ + struct consdev *best_cn, *cn, **list; + + /* + * Check if we should mute the console (for security reasons perhaps) + * It can be changes dynamically using sysctl kern.consmute + * once we are up and going. + * + */ + cn_mute = ((boothowto & (RB_MUTE + |RB_SINGLE + |RB_VERBOSE + |RB_ASKNAME)) == RB_MUTE); + + /* + * Find the first console with the highest priority. + */ + best_cn = NULL; + SET_FOREACH(list, cons_set) { + cn = *list; + cnremove(cn); + if (cn->cn_probe == NULL) + continue; + cn->cn_probe(cn); + if (cn->cn_pri == CN_DEAD) + continue; + if (best_cn == NULL || cn->cn_pri > best_cn->cn_pri) + best_cn = cn; + if (boothowto & RB_MULTIPLE) { + /* + * Initialize console, and attach to it. + */ + cn->cn_init(cn); + cnadd(cn); + } + } + if (best_cn == NULL) + return; + if ((boothowto & RB_MULTIPLE) == 0) { + best_cn->cn_init(best_cn); + cnadd(best_cn); + } + if (boothowto & RB_PAUSE) + console_pausing = 1; + /* + * Make the best console the preferred console. + */ + cnselect(best_cn); +} + +void +cninit_finish() +{ + console_pausing = 0; +} + +/* add a new physical console to back the virtual console */ +int +cnadd(struct consdev *cn) +{ + struct cn_device *cnd; + int i; + + STAILQ_FOREACH(cnd, &cn_devlist, cnd_next) + if (cnd->cnd_cn == cn) + return (0); + for (i = 0; i < CNDEVTAB_SIZE; i++) { + cnd = &cn_devtab[i]; + if (cnd->cnd_cn == NULL) + break; + } + if (cnd->cnd_cn != NULL) + return (ENOMEM); + cnd->cnd_cn = cn; + if (cn->cn_name[0] == '\0') { + /* XXX: it is unclear if/where this print might output */ + printf("WARNING: console at %p has no name\n", cn); + } + STAILQ_INSERT_TAIL(&cn_devlist, cnd, cnd_next); + if (STAILQ_FIRST(&cn_devlist) == cnd) + ttyconsdev_select(cnd->cnd_cn->cn_name); + + /* Add device to the active mask. */ + cnavailable(cn, (cn->cn_flags & CN_FLAG_NOAVAIL) == 0); + + return (0); +} + +void +cnremove(struct consdev *cn) +{ + struct cn_device *cnd; + int i; + + STAILQ_FOREACH(cnd, &cn_devlist, cnd_next) { + if (cnd->cnd_cn != cn) + continue; + if (STAILQ_FIRST(&cn_devlist) == cnd) + ttyconsdev_select(NULL); + STAILQ_REMOVE(&cn_devlist, cnd, cn_device, cnd_next); + cnd->cnd_cn = NULL; + + /* Remove this device from available mask. */ + for (i = 0; i < CNDEVTAB_SIZE; i++) + if (cnd == &cn_devtab[i]) { + cons_avail_mask &= ~(1 << i); + break; + } +#if 0 + /* + * XXX + * syscons gets really confused if console resources are + * freed after the system has initialized. + */ + if (cn->cn_term != NULL) + cn->cn_term(cn); +#endif + return; + } +} + +void +cnselect(struct consdev *cn) +{ + struct cn_device *cnd; + + STAILQ_FOREACH(cnd, &cn_devlist, cnd_next) { + if (cnd->cnd_cn != cn) + continue; + if (cnd == STAILQ_FIRST(&cn_devlist)) + return; + STAILQ_REMOVE(&cn_devlist, cnd, cn_device, cnd_next); + STAILQ_INSERT_HEAD(&cn_devlist, cnd, cnd_next); + ttyconsdev_select(cnd->cnd_cn->cn_name); + return; + } +} + +void +cnavailable(struct consdev *cn, int available) +{ + int i; + + for (i = 0; i < CNDEVTAB_SIZE; i++) { + if (cn_devtab[i].cnd_cn == cn) + break; + } + if (available) { + if (i < CNDEVTAB_SIZE) + cons_avail_mask |= (1 << i); + cn->cn_flags &= ~CN_FLAG_NOAVAIL; + } else { + if (i < CNDEVTAB_SIZE) + cons_avail_mask &= ~(1 << i); + cn->cn_flags |= CN_FLAG_NOAVAIL; + } +} + +int +cnunavailable(void) +{ + + return (cons_avail_mask == 0); +} + +/* + * sysctl_kern_console() provides output parseable in conscontrol(1). + */ +static int +sysctl_kern_console(SYSCTL_HANDLER_ARGS) +{ + struct cn_device *cnd; + struct consdev *cp, **list; + char *p; + int delete, error; + struct sbuf *sb; + + sb = sbuf_new(NULL, NULL, CNDEVPATHMAX * 2, SBUF_AUTOEXTEND); + if (sb == NULL) + return (ENOMEM); + sbuf_clear(sb); + STAILQ_FOREACH(cnd, &cn_devlist, cnd_next) + sbuf_printf(sb, "%s,", cnd->cnd_cn->cn_name); + sbuf_printf(sb, "/"); + SET_FOREACH(list, cons_set) { + cp = *list; + if (cp->cn_name[0] != '\0') + sbuf_printf(sb, "%s,", cp->cn_name); + } + sbuf_finish(sb); + error = sysctl_handle_string(oidp, sbuf_data(sb), sbuf_len(sb), req); + if (error == 0 && req->newptr != NULL) { + p = sbuf_data(sb); + error = ENXIO; + delete = 0; + if (*p == '-') { + delete = 1; + p++; + } + SET_FOREACH(list, cons_set) { + cp = *list; + if (strcmp(p, cp->cn_name) != 0) + continue; + if (delete) { + cnremove(cp); + error = 0; + } else { + error = cnadd(cp); + if (error == 0) + cnselect(cp); + } + break; + } + } + sbuf_delete(sb); + return (error); +} + +SYSCTL_PROC(_kern, OID_AUTO, console, CTLTYPE_STRING|CTLFLAG_RW, + 0, 0, sysctl_kern_console, "A", "Console device control"); + +/* + * User has changed the state of the console muting. + * This may require us to open or close the device in question. + */ +static int +sysctl_kern_consmute(SYSCTL_HANDLER_ARGS) +{ + int error; + int ocn_mute; + + ocn_mute = cn_mute; + error = sysctl_handle_int(oidp, &cn_mute, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + return (error); +} + +SYSCTL_PROC(_kern, OID_AUTO, consmute, CTLTYPE_INT|CTLFLAG_RW, + 0, sizeof(cn_mute), sysctl_kern_consmute, "I", ""); + +/* + * Low level console routines. + */ +int +cngetc(void) +{ + int c; + + if (cn_mute) + return (-1); + while ((c = cncheckc()) == -1) + ; + if (c == '\r') + c = '\n'; /* console input is always ICRNL */ + return (c); +} + +int +cncheckc(void) +{ + struct cn_device *cnd; + struct consdev *cn; + int c; + + if (cn_mute) + return (-1); + STAILQ_FOREACH(cnd, &cn_devlist, cnd_next) { + cn = cnd->cnd_cn; + if (!kdb_active || !(cn->cn_flags & CN_FLAG_NODEBUG)) { + if (cn->cn_checkc != NULL) + c = cn->cn_checkc(cn); + else + c = cn->cn_getc(cn); + if (c != -1) { + return (c); + } + } + } + return (-1); +} + +void +cnputc(int c) +{ + struct cn_device *cnd; + struct consdev *cn; + char *cp; + + if (cn_mute || c == '\0') + return; + STAILQ_FOREACH(cnd, &cn_devlist, cnd_next) { + cn = cnd->cnd_cn; + if (!kdb_active || !(cn->cn_flags & CN_FLAG_NODEBUG)) { + if (c == '\n') + cn->cn_putc(cn, '\r'); + cn->cn_putc(cn, c); + } + } + if (console_pausing && c == '\n' && !kdb_active) { + for (cp = console_pausestr; *cp != '\0'; cp++) + cnputc(*cp); + if (cngetc() == '.') + console_pausing = 0; + cnputc('\r'); + for (cp = console_pausestr; *cp != '\0'; cp++) + cnputc(' '); + cnputc('\r'); + } +} + +void +cnputs(char *p) +{ + int c; + int unlock_reqd = 0; + + if (use_cnputs_mtx) { + mtx_lock_spin(&cnputs_mtx); + unlock_reqd = 1; + } + + while ((c = *p++) != '\0') + cnputc(c); + + if (unlock_reqd) + mtx_unlock_spin(&cnputs_mtx); +} + +static int consmsgbuf_size = 8192; +SYSCTL_INT(_kern, OID_AUTO, consmsgbuf_size, CTLFLAG_RW, &consmsgbuf_size, 0, + ""); + +/* + * Redirect console output to a tty. + */ +void +constty_set(struct tty *tp) +{ + int size; + + KASSERT(tp != NULL, ("constty_set: NULL tp")); + if (consbuf == NULL) { + size = consmsgbuf_size; + consbuf = malloc(size, M_TTYCONS, M_WAITOK); + msgbuf_init(&consmsgbuf, consbuf, size); + callout_init(&conscallout, 0); + } + constty = tp; + constty_timeout(NULL); +} + +/* + * Disable console redirection to a tty. + */ +void +constty_clear(void) +{ + int c; + + constty = NULL; + if (consbuf == NULL) + return; + callout_stop(&conscallout); + while ((c = msgbuf_getchar(&consmsgbuf)) != -1) + cnputc(c); + free(consbuf, M_TTYCONS); + consbuf = NULL; +} + +/* Times per second to check for pending console tty messages. */ +static int constty_wakeups_per_second = 5; +SYSCTL_INT(_kern, OID_AUTO, constty_wakeups_per_second, CTLFLAG_RW, + &constty_wakeups_per_second, 0, ""); + +static void +constty_timeout(void *arg) +{ + int c; + + if (constty != NULL) { + tty_lock(constty); + while ((c = msgbuf_getchar(&consmsgbuf)) != -1) { + if (tty_putchar(constty, c) < 0) { + tty_unlock(constty); + constty = NULL; + break; + } + } + + if (constty != NULL) + tty_unlock(constty); + } + if (constty != NULL) { + callout_reset(&conscallout, hz / constty_wakeups_per_second, + constty_timeout, NULL); + } else { + /* Deallocate the constty buffer memory. */ + constty_clear(); + } +} + +static void +cn_drvinit(void *unused) +{ + + mtx_init(&cnputs_mtx, "cnputs_mtx", NULL, MTX_SPIN | MTX_NOWITNESS); + use_cnputs_mtx = 1; +} + +SYSINIT(cndev, SI_SUB_DRIVERS, SI_ORDER_MIDDLE, cn_drvinit, NULL); + +/* + * Sysbeep(), if we have hardware for it + */ + +#ifdef HAS_TIMER_SPKR + +static int beeping; + +static void +sysbeepstop(void *chan) +{ + + timer_spkr_release(); + beeping = 0; +} + +int +sysbeep(int pitch, int period) +{ + + if (timer_spkr_acquire()) { + if (!beeping) { + /* Something else owns it. */ + return (EBUSY); + } + } + timer_spkr_setfreq(pitch); + if (!beeping) { + beeping = period; + timeout(sysbeepstop, (void *)NULL, period); + } + return (0); +} + +#else + +/* + * No hardware, no sound + */ + +int +sysbeep(int pitch __unused, int period __unused) +{ + + return (ENODEV); +} + +#endif + Modified: user/imp/newcard/sys/kern/tty.c ============================================================================== --- user/imp/newcard/sys/kern/tty.c Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/kern/tty.c Sat Nov 1 21:49:32 2008 (r184535) @@ -73,6 +73,10 @@ static struct sx tty_list_sx; SX_SYSINIT(tty_list, &tty_list_sx, "tty list"); static unsigned int tty_list_count = 0; +/* Character device of /dev/console. */ +static struct cdev *dev_console; +static const char *dev_console_filename; + /* * Flags that are supported and stored by this implementation. */ @@ -86,7 +90,7 @@ static unsigned int tty_list_count = 0; HUPCL|CLOCAL|CCTS_OFLOW|CRTS_IFLOW|CDTR_IFLOW|\ CDSR_OFLOW|CCAR_OFLOW) -#define TTY_CALLOUT(tp,d) ((tp)->t_dev != (d)) +#define TTY_CALLOUT(tp,d) ((d) != (tp)->t_dev && (d) != dev_console) /* * Set TTY buffer sizes. @@ -1189,11 +1193,7 @@ tty_wait(struct tty *tp, struct cv *cv) int error; int revokecnt = tp->t_revokecnt; -#if 0 - /* XXX: /dev/console also picks up Giant. */ tty_lock_assert(tp, MA_OWNED|MA_NOTRECURSED); -#endif - tty_lock_assert(tp, MA_OWNED); MPASS(!tty_gone(tp)); error = cv_wait_sig(cv, tp->t_mtx); @@ -1215,11 +1215,7 @@ tty_timedwait(struct tty *tp, struct cv int error; int revokecnt = tp->t_revokecnt; -#if 0 - /* XXX: /dev/console also picks up Giant. */ tty_lock_assert(tp, MA_OWNED|MA_NOTRECURSED); -#endif - tty_lock_assert(tp, MA_OWNED); MPASS(!tty_gone(tp)); error = cv_timedwait_sig(cv, tp->t_mtx, hz); @@ -1662,6 +1658,10 @@ tty_hiwat_in_unblock(struct tty *tp) ttydevsw_inwakeup(tp); } +/* + * TTY hooks interface. + */ + static int ttyhook_defrint(struct tty *tp, char c, int flags) { @@ -1745,6 +1745,84 @@ ttyhook_unregister(struct tty *tp) tty_rel_free(tp); } +/* + * /dev/console handling. + */ + +static int +ttyconsdev_open(struct cdev *dev, int oflags, int devtype, struct thread *td) +{ + struct tty *tp; + + /* System has no console device. */ + if (dev_console_filename == NULL) + return (ENXIO); + + /* Look up corresponding TTY by device name. */ + sx_slock(&tty_list_sx); + TAILQ_FOREACH(tp, &tty_list, t_list) { + if (strcmp(dev_console_filename, tty_devname(tp)) == 0) { + dev_console->si_drv1 = tp; + break; + } + } + sx_sunlock(&tty_list_sx); + + /* System console has no TTY associated. */ + if (dev_console->si_drv1 == NULL) + return (ENXIO); + + return (ttydev_open(dev, oflags, devtype, td)); +} + +static int +ttyconsdev_write(struct cdev *dev, struct uio *uio, int ioflag) +{ + + log_console(uio); + + return (ttydev_write(dev, uio, ioflag)); +} + +/* + * /dev/console is a little different than normal TTY's. Unlike regular + * TTY device nodes, this device node will not revoke the entire TTY + * upon closure and all data written to it will be logged. + */ +static struct cdevsw ttyconsdev_cdevsw = { + .d_version = D_VERSION, + .d_open = ttyconsdev_open, + .d_read = ttydev_read, + .d_write = ttyconsdev_write, + .d_ioctl = ttydev_ioctl, + .d_kqfilter = ttydev_kqfilter, + .d_poll = ttydev_poll, + .d_mmap = ttydev_mmap, + .d_name = "ttyconsdev", + .d_flags = D_TTY, +}; + +static void +ttyconsdev_init(void *unused) +{ + + dev_console = make_dev(&ttyconsdev_cdevsw, 0, UID_ROOT, GID_WHEEL, + 0600, "console"); +} + +SYSINIT(tty, SI_SUB_DRIVERS, SI_ORDER_FIRST, ttyconsdev_init, NULL); + +void +ttyconsdev_select(const char *name) +{ + + dev_console_filename = name; +} + +/* + * Debugging routines. + */ + #include "opt_ddb.h" #ifdef DDB #include @@ -1929,7 +2007,7 @@ DB_SHOW_ALL_COMMAND(ttys, db_show_all_tt osiz, tp->t_outq.to_end - tp->t_outq.to_begin, osiz - tp->t_outlow, - tp->t_column, + MIN(tp->t_column, 99999), tp->t_session ? tp->t_session->s_sid : 0, tp->t_pgrp ? tp->t_pgrp->pg_id : 0); Modified: user/imp/newcard/sys/modules/rl/Makefile ============================================================================== --- user/imp/newcard/sys/modules/rl/Makefile Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/modules/rl/Makefile Sat Nov 1 21:49:32 2008 (r184535) @@ -3,7 +3,7 @@ .PATH: ${.CURDIR}/../../pci KMOD= if_rl -SRCS= if_rl.c device_if.h bus_if.h pci_if.h +SRCS= if_rl.c device_if.h bus_if.h pci_if.h opt_rl.h SRCS+= miibus_if.h .include Modified: user/imp/newcard/sys/pci/if_rl.c ============================================================================== --- user/imp/newcard/sys/pci/if_rl.c Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/pci/if_rl.c Sat Nov 1 21:49:32 2008 (r184535) @@ -85,6 +85,7 @@ __FBSDID("$FreeBSD$"); #ifdef HAVE_KERNEL_OPTION_HEADERS #include "opt_device_polling.h" +#include "opt_rl.h" #endif #include @@ -155,7 +156,7 @@ static struct rl_type rl_devs[] = { { DELTA_VENDORID, DELTA_DEVICEID_8139, RL_8139, "Delta Electronics 8139 10/100BaseTX" }, { ADDTRON_VENDORID, ADDTRON_DEVICEID_8139, RL_8139, - "Addtron Technolgy 8139 10/100BaseTX" }, + "Addtron Technology 8139 10/100BaseTX" }, { DLINK_VENDORID, DLINK_DEVICEID_530TXPLUS, RL_8139, "D-Link DFE-530TX+ 10/100BaseTX" }, { DLINK_VENDORID, DLINK_DEVICEID_690TXD, RL_8139, @@ -1318,7 +1319,7 @@ rl_rxeof(struct rl_softc *sc) RL_LOCK(sc); } - /* No need to sync Rx memory block as we didn't mofify it. */ + /* No need to sync Rx memory block as we didn't modify it. */ } /* @@ -1383,19 +1384,143 @@ rl_txeof(struct rl_softc *sc) sc->rl_watchdog_timer = 0; } +#ifdef RL_TWISTER_ENABLE +static void +rl_twister_update(struct rl_softc *sc) +{ + uint16_t linktest; + /* + * Table provided by RealTek (Kinston ) for + * Linux driver. Values undocumented otherwise. + */ + static const uint32_t param[4][4] = { + {0xcb39de43, 0xcb39ce43, 0xfb38de03, 0xcb38de43}, + {0xcb39de43, 0xcb39ce43, 0xcb39ce83, 0xcb39ce83}, + {0xcb39de43, 0xcb39ce43, 0xcb39ce83, 0xcb39ce83}, + {0xbb39de43, 0xbb39ce43, 0xbb39ce83, 0xbb39ce83} + }; + + /* + * Tune the so-called twister registers of the RTL8139. These + * are used to compensate for impedance mismatches. The + * method for tuning these registers is undocumented and the + * following procedure is collected from public sources. + */ + switch (sc->rl_twister) + { + case CHK_LINK: + /* + * If we have a sufficient link, then we can proceed in + * the state machine to the next stage. If not, then + * disable further tuning after writing sane defaults. + */ + if (CSR_READ_2(sc, RL_CSCFG) & RL_CSCFG_LINK_OK) { + CSR_WRITE_2(sc, RL_CSCFG, RL_CSCFG_LINK_DOWN_OFF_CMD); + sc->rl_twister = FIND_ROW; + } else { + CSR_WRITE_2(sc, RL_CSCFG, RL_CSCFG_LINK_DOWN_CMD); + CSR_WRITE_4(sc, RL_NWAYTST, RL_NWAYTST_CBL_TEST); + CSR_WRITE_4(sc, RL_PARA78, RL_PARA78_DEF); + CSR_WRITE_4(sc, RL_PARA7C, RL_PARA7C_DEF); + sc->rl_twister = DONE; + } + break; + case FIND_ROW: + /* + * Read how long it took to see the echo to find the tuning + * row to use. + */ + linktest = CSR_READ_2(sc, RL_CSCFG) & RL_CSCFG_STATUS; + if (linktest == RL_CSCFG_ROW3) + sc->rl_twist_row = 3; + else if (linktest == RL_CSCFG_ROW2) + sc->rl_twist_row = 2; + else if (linktest == RL_CSCFG_ROW1) + sc->rl_twist_row = 1; + else + sc->rl_twist_row = 0; + sc->rl_twist_col = 0; + sc->rl_twister = SET_PARAM; + break; + case SET_PARAM: + if (sc->rl_twist_col == 0) + CSR_WRITE_4(sc, RL_NWAYTST, RL_NWAYTST_RESET); + CSR_WRITE_4(sc, RL_PARA7C, + param[sc->rl_twist_row][sc->rl_twist_col]); + if (++sc->rl_twist_col == 4) { + if (sc->rl_twist_row == 3) + sc->rl_twister = RECHK_LONG; + else + sc->rl_twister = DONE; + } + break; + case RECHK_LONG: + /* + * For long cables, we have to double check to make sure we + * don't mistune. + */ + linktest = CSR_READ_2(sc, RL_CSCFG) & RL_CSCFG_STATUS; + if (linktest == RL_CSCFG_ROW3) + sc->rl_twister = DONE; + else { + CSR_WRITE_4(sc, RL_PARA7C, RL_PARA7C_RETUNE); + sc->rl_twister = RETUNE; + } + break; + case RETUNE: + /* Retune for a shorter cable (try column 2) */ + CSR_WRITE_4(sc, RL_NWAYTST, RL_NWAYTST_CBL_TEST); + CSR_WRITE_4(sc, RL_PARA78, RL_PARA78_DEF); + CSR_WRITE_4(sc, RL_PARA7C, RL_PARA7C_DEF); + CSR_WRITE_4(sc, RL_NWAYTST, RL_NWAYTST_RESET); + sc->rl_twist_row--; + sc->rl_twist_col = 0; + sc->rl_twister = SET_PARAM; + break; + + case DONE: + break; + } + +} +#endif + static void rl_tick(void *xsc) { struct rl_softc *sc = xsc; struct mii_data *mii; + int ticks; RL_LOCK_ASSERT(sc); + /* + * If we're doing the twister cable calibration, then we need to defer + * watchdog timeouts. This is a no-op in normal operations, but + * can falsely trigger when the cable calibration takes a while and + * there was traffic ready to go when rl was started. + * + * We don't defer mii_tick since that updates the mii status, which + * helps the twister process, at least according to similar patches + * for the Linux driver I found online while doing the fixes. Worst + * case is a few extra mii reads during calibration. + */ mii = device_get_softc(sc->rl_miibus); mii_tick(mii); - +#ifdef RL_TWISTER_ENABLE + if (sc->rl_twister == DONE) + rl_watchdog(sc); + else + rl_twister_update(sc); + if (sc->rl_twister == DONE) + ticks = hz; + else + ticks = hz / 10; +#else rl_watchdog(sc); + ticks = hz; +#endif - callout_reset(&sc->rl_stat_callout, hz, rl_tick, sc); + callout_reset(&sc->rl_stat_callout, ticks, rl_tick, sc); } #ifdef DEVICE_POLLING @@ -1524,7 +1649,7 @@ rl_encap(struct rl_softc *sc, struct mbu if (padlen > 0) { /* - * Make security concious people happy: zero out the + * Make security-conscious people happy: zero out the * bytes in the pad area, since we don't know what * this mbuf cluster buffer's previous user might * have left in it. @@ -1643,6 +1768,14 @@ rl_init_locked(struct rl_softc *sc) rl_stop(sc); rl_reset(sc); +#ifdef RL_TWISTER_ENABLE + /* + * Reset twister register tuning state. The twister registers + * and their tuning are undocumented, but are necessary to cope + * with bad links. rl_twister = DONE here will disable this entirely. + */ + sc->rl_twister = CHK_LINK; +#endif /* * Init our MAC address. Even though the chipset Modified: user/imp/newcard/sys/pci/if_rlreg.h ============================================================================== --- user/imp/newcard/sys/pci/if_rlreg.h Sat Nov 1 21:16:09 2008 (r184534) +++ user/imp/newcard/sys/pci/if_rlreg.h Sat Nov 1 21:49:32 2008 (r184535) @@ -309,6 +309,27 @@ #define RL_CMD_RESET 0x0010 /* + * Twister register values. These are completely undocumented and derived + * from public sources. *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 22:11:10 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2809B1065673; Sat, 1 Nov 2008 22:11:10 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 173148FC1A; Sat, 1 Nov 2008 22:11:10 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1MBAsP020236; Sat, 1 Nov 2008 22:11:10 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1MBAQI020235; Sat, 1 Nov 2008 22:11:10 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200811012211.mA1MBAQI020235@svn.freebsd.org> From: Edwin Groothuis Date: Sat, 1 Nov 2008 22:11:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184537 - user/edwin/releasenotes X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 22:11:10 -0000 Author: edwin Date: Sat Nov 1 22:11:09 2008 New Revision: 184537 URL: http://svn.freebsd.org/changeset/base/184537 Log: notice 2008i Modified: user/edwin/releasenotes/contrib.xml Modified: user/edwin/releasenotes/contrib.xml ============================================================================== --- user/edwin/releasenotes/contrib.xml Sat Nov 1 21:56:45 2008 (r184536) +++ user/edwin/releasenotes/contrib.xml Sat Nov 1 22:11:09 2008 (r184537) @@ -107,12 +107,21 @@ ]]> + + 2008-10-28 + 2008-10-28 + 2008-10-28 + 2008-10-28 + 2008-10-28 + 2008-10-29 + 2008-10-14 2008-10-14 2008-10-14 2008-10-14 2008-10-14 + 2008-10-14 2008-10-14 From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 22:12:17 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D3B74106567F; Sat, 1 Nov 2008 22:12:17 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BFA488FC13; Sat, 1 Nov 2008 22:12:17 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1MCHES020349; Sat, 1 Nov 2008 22:12:17 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1MCHxK020342; Sat, 1 Nov 2008 22:12:17 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200811012212.mA1MCHxK020342@svn.freebsd.org> From: Edwin Groothuis Date: Sat, 1 Nov 2008 22:12:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184538 - in user/edwin/releasenotes: releng-6.0/release/doc/en_US.ISO8859-1/relnotes releng-6.1/release/doc/en_US.ISO8859-1/relnotes releng-6.2/release/doc/en_US.ISO8859-1/relnotes rel... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 22:12:18 -0000 Author: edwin Date: Sat Nov 1 22:12:17 2008 New Revision: 184538 URL: http://svn.freebsd.org/changeset/base/184538 Log: Little hack to create contrib.ent from the command line. Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/Makefile user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/Makefile user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/Makefile user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/Makefile user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/Makefile user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/Makefile Modified: user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:11:09 2008 (r184537) +++ user/edwin/releasenotes/releng-6.0/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:12:17 2008 (r184538) @@ -10,8 +10,8 @@ SUBDIR+= i386 SUBDIR+= pc98 SUBDIR+= sparc64 -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl +contrib.ent: + cd common; make contrib.ent .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" Modified: user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:11:09 2008 (r184537) +++ user/edwin/releasenotes/releng-6.1/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:12:17 2008 (r184538) @@ -10,8 +10,8 @@ SUBDIR+= i386 SUBDIR+= pc98 SUBDIR+= sparc64 -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl +contrib.ent: + cd common; make contrib.ent .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" Modified: user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:11:09 2008 (r184537) +++ user/edwin/releasenotes/releng-6.2/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:12:17 2008 (r184538) @@ -10,8 +10,8 @@ SUBDIR+= i386 SUBDIR+= pc98 SUBDIR+= sparc64 -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl +contrib.ent: + cd common; make contrib.ent .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" Modified: user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:11:09 2008 (r184537) +++ user/edwin/releasenotes/releng-6.3/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:12:17 2008 (r184538) @@ -11,8 +11,8 @@ SUBDIR+= pc98 SUBDIR+= powerpc SUBDIR+= sparc64 -contrib.ent: ${RELN_ROOT}/../../../contrib.xml - ${PERL} -w ${RELN_ROOT}/../../../contrib-xmltoent.pl +contrib.ent: + cd common; make contrib.ent .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" Modified: user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/Makefile ============================================================================== --- user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:11:09 2008 (r184537) +++ user/edwin/releasenotes/releng-6.4/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:12:17 2008 (r184538) @@ -11,5 +11,8 @@ SUBDIR+= pc98 SUBDIR+= powerpc SUBDIR+= sparc64 +contrib.ent: + cd common; make contrib.ent + .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" Modified: user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/Makefile ============================================================================== --- user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:11:09 2008 (r184537) +++ user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/relnotes/Makefile Sat Nov 1 22:12:17 2008 (r184538) @@ -11,5 +11,8 @@ SUBDIR+= pc98 SUBDIR+= powerpc SUBDIR+= sparc64 +contrib.ent: + cd common; make contrib.ent + .include "${RELN_ROOT}/share/mk/doc.relnotes.mk" .include "${DOC_PREFIX}/share/mk/doc.project.mk" From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 22:18:50 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6CCEC106564A; Sat, 1 Nov 2008 22:18:50 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 41D7D8FC08; Sat, 1 Nov 2008 22:18:50 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1MIorE020795; Sat, 1 Nov 2008 22:18:50 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1MIo3D020794; Sat, 1 Nov 2008 22:18:50 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200811012218.mA1MIo3D020794@svn.freebsd.org> From: Edwin Groothuis Date: Sat, 1 Nov 2008 22:18:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184539 - user/edwin/releasenotes X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 22:18:50 -0000 Author: edwin Date: Sat Nov 1 22:18:49 2008 New Revision: 184539 URL: http://svn.freebsd.org/changeset/base/184539 Log: add 6.4 release path Modified: user/edwin/releasenotes/Makefile Modified: user/edwin/releasenotes/Makefile ============================================================================== --- user/edwin/releasenotes/Makefile Sat Nov 1 22:12:17 2008 (r184538) +++ user/edwin/releasenotes/Makefile Sat Nov 1 22:18:49 2008 (r184539) @@ -2,7 +2,7 @@ DIRS=head STABLE=7 6 -RELENG=7.0 6.3 6.2 6.1 6.0 +RELENG=7.0 6.4 6.3 6.2 6.1 6.0 build: .for d in ${DIRS} ${STABLE:S/^/stable-/} ${RELENG:S/^/releng-/} From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 23:39:21 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 798FC1065675; Sat, 1 Nov 2008 23:39:21 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 667168FC0A; Sat, 1 Nov 2008 23:39:21 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1NdL5G022776; Sat, 1 Nov 2008 23:39:21 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1NdLZO022773; Sat, 1 Nov 2008 23:39:21 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200811012339.mA1NdLZO022773@svn.freebsd.org> From: Edwin Groothuis Date: Sat, 1 Nov 2008 23:39:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184541 - in user/edwin/releasenotes/stable-6/release: . doc/en_US.ISO8859-1/hardware/amd64 scripts X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 23:39:21 -0000 Author: edwin Date: Sat Nov 1 23:39:21 2008 New Revision: 184541 URL: http://svn.freebsd.org/changeset/base/184541 Log: MFS Modified: user/edwin/releasenotes/stable-6/release/ (props changed) user/edwin/releasenotes/stable-6/release/Makefile user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/hardware/amd64/proc-amd64.sgml user/edwin/releasenotes/stable-6/release/scripts/package-split.py user/edwin/releasenotes/stable-6/release/scripts/src-install.sh (props changed) Modified: user/edwin/releasenotes/stable-6/release/Makefile ============================================================================== --- user/edwin/releasenotes/stable-6/release/Makefile Sat Nov 1 23:05:49 2008 (r184540) +++ user/edwin/releasenotes/stable-6/release/Makefile Sat Nov 1 23:39:21 2008 (r184541) @@ -192,6 +192,7 @@ MNT= /mnt .undef MAKE_FLOPPIES .if ${TARGET_ARCH} == "i386" MAKE_FLOPPIES= true +MAKE_DVD= .if ${TARGET} == "pc98" SMALLFLOPPYSIZE= 1200 SMALLFLOPPYSPLITSIZE= 1152 @@ -230,6 +231,7 @@ MFSLABEL= auto SEPARATE_LIVEFS= .elif ${TARGET_ARCH} == "amd64" MAKE_FLOPPIES= true +MAKE_DVD= FLOPPYSIZE= 1440 FLOPPYSPLITSIZE= 1392 FLOPPYINODE= 40000 @@ -269,6 +271,9 @@ CD_BOOT= ${CD}/bootonly CD_DISC1= ${CD}/disc1 CD_DISC2= ${CD}/disc2 CD_DISC3= ${CD}/disc3 +.if defined(MAKE_DVD) +CD_DVD1= ${CD}/dvd1 +.endif .if !defined(NODOC) CD_DOCS= ${CD}/docs .endif @@ -488,6 +493,7 @@ release rerelease: KERNELS \ KERNELS_BASE \ KERNEL_FLAGS \ + MAKE_DVD \ MAKE_FLOPPIES \ MAKE_ISOS \ NOCDROM \ @@ -941,6 +947,18 @@ cdrom.1: find . -depth -print | cpio -dumpl ${CD_LIVEFS} ) ; \ fi \ done +.if defined(MAKE_DVD) + @echo "Building DVD filesystem image as well as CDROM" + @mkdir -p ${CD_DVD1}/${BUILDNAME} + @for i in ${DISTRIBUTIONS} ; \ + do \ + if [ -d ${RD}/trees/$${i} ] ; then \ + chflags -R noschg ${RD}/trees/$${i} || true ; \ + ( cd ${RD}/trees/$${i} && \ + find . -depth -print | cpio -dumpl ${CD_DVD1} ) ; \ + fi \ + done +.endif @echo "Copy GENERIC kernel to boot area" @cp -Rp ${RD}/kernels/GENERIC/ ${CD_LIVEFS}/boot/kernel @rm -f ${CD_LIVEFS}/.profile @@ -958,6 +976,23 @@ cdrom.1: @cp ${RD}/trees/base/boot/device.hints ${CD_LIVEFS}/boot/device.hints .endif @echo "CD_VERSION = ${BUILDNAME}" > ${CD_LIVEFS}/cdrom.inf +.if defined(MAKE_DVD) + @cp -Rp ${RD}/kernels/GENERIC/ ${CD_DVD1}/boot/kernel + @rm -f ${CD_DVD1}/boot/kernel/*.symbols + @rm -f ${CD_DVD1}/.profile + @cp ${.CURDIR}/fixit.profile ${CD_DVD1}/.profile + @ln -sf /rescue ${CD_DVD1}/stand + @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DVD1}/cdrom.inf + @rm -f ${CD_DVD1}/boot/loader.conf + @cp ${RD}/mfsroot/mfsroot.gz ${CD_DVD1}/boot/mfsroot.gz + @echo 'mfsroot_load="YES"' > ${CD_DVD1}/boot/loader.conf + @echo 'mfsroot_type="mfs_root"' >> ${CD_DVD1}/boot/loader.conf + @echo 'mfsroot_name="/boot/mfsroot"' >> ${CD_DVD1}/boot/loader.conf +.if exists(${RD}/trees/base/boot/device.hints) + @rm -f ${CD_DVD1}/boot/device.hints + @cp ${RD}/trees/base/boot/device.hints ${CD_DVD1}/boot/device.hints +.endif +.endif touch ${.TARGET} # Build disc1, disc2 and disc3 cdrom images @@ -998,11 +1033,37 @@ cdrom.2: @mkdir -p ${CD_DISC3} @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DISC3}/cdrom.inf @echo "CD_VOLUME = 3" >> ${CD_DISC3}/cdrom.inf +.if defined(MAKE_DVD) +.if defined(MAKE_FLOPPIES) + @cd ${RD} && find floppies -print | cpio -dumpl ${CD_DVD1} +.endif + @cd ${RD}/dists && find . -print | cpio -dumpl ${CD_DVD1}/${BUILDNAME} +.if !defined(NODOC) + @for i in ${DIST_DOCS_ARCH_INDEP}; do \ + cp ${RND}/${RELNOTES_LANG}/$$i/article.txt \ + ${CD_DVD1}/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ + cp ${RND}/${RELNOTES_LANG}/$$i/article.html \ + ${CD_DVD1}/`echo $${i} | tr 'a-z' 'A-Z'`.HTM; \ + done + @for i in ${DIST_DOCS_ARCH_DEP}; do \ + cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.txt \ + ${CD_DVD1}/`echo $${i} | tr 'a-z' 'A-Z'`.TXT; \ + cp ${RND}/${RELNOTES_LANG}/$$i/${TARGET}/article.html \ + ${CD_DVD1}/`echo $${i} | tr 'a-z' 'A-Z'`.HTM; \ + done + @cp ${RND}/${RELNOTES_LANG}/readme/docbook.css ${CD_DVD1} +.endif + @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DVD1}/cdrom.inf + @echo "CD_VOLUME = 1" >> ${CD_DVD1}/cdrom.inf +.endif .if !defined(NODOC) @echo "Building CDROM docs filesystem image" @mkdir -p ${CD_DOCS} @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DOCS}/cdrom.inf @mkdir -p ${CD_DOCS}/usr/share/doc +.if defined(MAKE_DVD) + @mkdir -p ${CD_DVD1}/usr/share/doc +.endif @for i in `ls ${CD_LIVEFS}/usr/share/doc`; do \ if [ -L ${CD_LIVEFS}/usr/share/doc/$$i -o \ -d /usr/doc/$$i ]; then \ @@ -1010,6 +1071,10 @@ cdrom.2: ${CD_DOCS}/usr/share/doc; \ fi \ done +.if defined(MAKE_DVD) + @cd ${CD_DOCS}/usr/share/doc && find . -print | \ + cpio -dumpl ${CD_DVD1}/usr/share/doc +.endif .endif touch ${.TARGET} @@ -1043,6 +1108,9 @@ CD_DISC2_PKGS= ${CD_PACKAGE_TREE}/disc2 .if exists(${CD_PACKAGE_TREE}/disc3) CD_DISC3_PKGS= ${CD_PACKAGE_TREE}/disc3 .endif +.if exists(${CD_PACKAGE_TREE}/dvd1) +CD_DVD_PKGS= ${CD_PACKAGE_TREE}/dvd1 +.endif .endif .endif @@ -1066,6 +1134,12 @@ iso.1: FreeBSD_Packages_2 \ ${CD}/${BUILDNAME}-${TARGET}-disc3.iso ${CD_DISC3} \ ${CD_DISC3_PKGS} +.if defined(MAKE_DVD) + @sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh ${BOOTABLE} \ + FreeBSD_Install \ + ${CD}/${BUILDNAME}-${TARGET}-dvd1.iso ${CD_DVD1} \ + ${CD_DVD1_PKGS} +.endif .if !defined(NODOC) @sh ${.CURDIR}/${TARGET_ARCH}/mkisoimages.sh \ FreeBSD_Documentation \ Modified: user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/hardware/amd64/proc-amd64.sgml ============================================================================== --- user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/hardware/amd64/proc-amd64.sgml Sat Nov 1 23:05:49 2008 (r184540) +++ user/edwin/releasenotes/stable-6/release/doc/en_US.ISO8859-1/hardware/amd64/proc-amd64.sgml Sat Nov 1 23:39:21 2008 (r184541) @@ -29,7 +29,7 @@ - Intel 64-bit Xeon (Nacona). + Intel 64-bit Xeon (Nocona). This processor is fabricated on 90nm process technology, and operates with 2.80 to 3.60 GHz (FSB 800MHz) and Intel E7520/E7525/E7320 chipsets. Modified: user/edwin/releasenotes/stable-6/release/scripts/package-split.py ============================================================================== --- user/edwin/releasenotes/stable-6/release/scripts/package-split.py Sat Nov 1 23:05:49 2008 (r184540) +++ user/edwin/releasenotes/stable-6/release/scripts/package-split.py Sat Nov 1 23:39:21 2008 (r184541) @@ -26,13 +26,12 @@ else: # List of packages for disc1. This just includes packages sysinstall can # install as a distribution def disc1_packages(): - pkgs = ['lang/perl5.8'] - pkgs.extend(['x11/xorg', - 'x11-drivers/xorg-drivers', - 'x11-fonts/xorg-fonts', - 'x11-servers/xorg-nestserver', - 'x11-servers/xorg-vfbserver', - 'devel/imake']) + pkgs = ['archivers/unzip', + 'emulators/mtools', + 'lang/perl5.8', + 'misc/compat5x', + 'net/cvsup-without-gui', + 'net/rsync'] if arch == 'alpha': pkgs.append('emulators/osf1_base') elif arch == 'i386': @@ -49,42 +48,45 @@ def disc2_packages(): 'x11/kde-lite'] else: pkgs = ['x11/gnome2', - 'x11/kde3'] + 'x11/kdebase3', + 'x11/kdelibs3'] + pkgs.extend(['x11/xorg', + 'x11-drivers/xorg-drivers', + 'x11-fonts/xorg-fonts', + 'x11-servers/xorg-nestserver', + 'x11-servers/xorg-vfbserver', + 'devel/imake']) return pkgs def disc3_packages(): - pkgs = ['x11-wm/afterstep', + pkgs = ['x11/kde3', + 'x11-wm/afterstep', 'x11-wm/windowmaker', 'x11-wm/fvwm2', # "Nice to have" - 'archivers/unzip', 'astro/xearth', 'devel/gmake', 'editors/emacs', 'editors/vim-lite', 'editors/xemacs', - 'emulators/mtools', 'graphics/png', 'graphics/xv', 'irc/xchat', 'lang/php5', + 'mail/alpine', 'mail/exim', 'mail/fetchmail', 'mail/mutt', - 'mail/pine4', 'mail/popd', 'mail/xfmail', 'mail/postfix', - 'misc/compat5x', - 'net/cvsup-without-gui', - 'net/rsync', 'net/samba3', 'news/slrn', 'news/tin', 'ports-mgmt/portupgrade', 'print/a2ps-letter', 'print/apsfilter', - 'print/ghostscript-gnu-nox11', + 'print/ghostscript7-nox11', 'print/gv', 'print/psutils-letter', 'print/teTeX', From owner-svn-src-user@FreeBSD.ORG Sat Nov 1 23:46:50 2008 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F3D5106567E; Sat, 1 Nov 2008 23:46:50 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CF548FC1D; Sat, 1 Nov 2008 23:46:50 +0000 (UTC) (envelope-from edwin@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mA1Nko8M022957; Sat, 1 Nov 2008 23:46:50 GMT (envelope-from edwin@svn.freebsd.org) Received: (from edwin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mA1Nkos3022954; Sat, 1 Nov 2008 23:46:50 GMT (envelope-from edwin@svn.freebsd.org) Message-Id: <200811012346.mA1Nkos3022954@svn.freebsd.org> From: Edwin Groothuis Date: Sat, 1 Nov 2008 23:46:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r184542 - in user/edwin/releasenotes/head/release: . doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Nov 2008 23:46:50 -0000 Author: edwin Date: Sat Nov 1 23:46:50 2008 New Revision: 184542 URL: http://svn.freebsd.org/changeset/base/184542 Log: MFS Modified: user/edwin/releasenotes/head/release/ (props changed) user/edwin/releasenotes/head/release/Makefile user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/hardware/article.sgml Modified: user/edwin/releasenotes/head/release/Makefile ============================================================================== --- user/edwin/releasenotes/head/release/Makefile Sat Nov 1 23:39:21 2008 (r184541) +++ user/edwin/releasenotes/head/release/Makefile Sat Nov 1 23:46:50 2008 (r184542) @@ -957,13 +957,13 @@ cdrom.1: @rm -f ${CD_LIVEFS}/boot/device.hints @cp ${RD}/trees/base/boot/device.hints ${CD_LIVEFS}/boot/device.hints .endif + @echo "CD_VERSION = ${BUILDNAME}" > ${CD_LIVEFS}/cdrom.inf .if defined(MAKE_DVD) @cp -Rp ${RD}/kernels/GENERIC/ ${CD_DVD1}/boot/kernel @rm -f ${CD_DVD1}/boot/kernel/*.symbols @rm -f ${CD_DVD1}/.profile @cp ${.CURDIR}/fixit.profile ${CD_DVD1}/.profile @ln -sf /rescue ${CD_DVD1}/stand - @echo "CD_VERSION = ${BUILDNAME}" > ${CD_LIVEFS}/cdrom.inf @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DVD1}/cdrom.inf @rm -f ${CD_DVD1}/boot/loader.conf @cp ${RD}/mfsroot/mfsroot.gz ${CD_DVD1}/boot/mfsroot.gz @@ -1033,7 +1033,7 @@ cdrom.2: @echo "CD_VOLUME = 1" >> ${CD_DVD1}/cdrom.inf .endif .if !defined(NODOC) - echo "Building CDROM docs filesystem image" + @echo "Building CDROM docs filesystem image" @mkdir -p ${CD_DOCS} @echo "CD_VERSION = ${BUILDNAME}" > ${CD_DOCS}/cdrom.inf @mkdir -p ${CD_DOCS}/usr/share/doc Modified: user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/hardware/article.sgml ============================================================================== --- user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/hardware/article.sgml Sat Nov 1 23:39:21 2008 (r184541) +++ user/edwin/releasenotes/head/release/doc/en_US.ISO8859-1/hardware/article.sgml Sat Nov 1 23:46:50 2008 (r184542) @@ -90,7 +90,7 @@ - &intel; 64-bit &xeon; (Nacona). This + &intel; 64-bit &xeon; (Nocona). This processor is fabricated on 90nm process technology, and operates with 2.80 to 3.60 GHz (FSB 800MHz) and &intel; E7520/E7525/E7320 chipsets.