Date: Wed, 1 Oct 2008 18:09:08 +0200 From: Tijl Coosemans <tijl@ulyssis.org> To: freebsd-emulation@freebsd.org, Chagin Dmitry <dchagin@freebsd.org> Subject: Re: firefox & flash9 patches Message-ID: <200810011809.10681.tijl@ulyssis.org> In-Reply-To: <20080929200237.GA68300@dchagin.dialup.corbina.ru> References: <20080929200237.GA68300@dchagin.dialup.corbina.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --] On Monday 29 September 2008 22:02:37 Chagin Dmitry wrote: > please, test following patches (just -current). > with them firefox && flash9 forks for me, > I tested only on ia32@amd64 with 2.6.16 enabled, > firefox 2.0.0.16 and flash9 plugin. > > If all is good, I will ask des@ and kib@ to review&commit them. thnx! On 7.1-PRERELEASE, linux 2.4, fc4, the linprocfs patch seems to improve things a lot. I'm still having crashes from time to time, but overall flash9 works much better. Great work! I've attached the patch for RELENG_7 (patch-linprocfs) and another patch for libflashsupport [1]. It should improve OSS support, A/V sync etc. For those without a linux box, I've attached a compiled version of the lib as well. You can drop it in /compat/linux/usr/lib. [1] http://sourceforge.net/projects/flashsupport/ [-- Attachment #2 --] --- linprocfs.c.orig 2008-10-01 17:47:51.000000000 +0200 +++ linprocfs.c 2008-10-01 17:49:02.000000000 +0200 @@ -869,14 +869,12 @@ static int linprocfs_doprocmaps(PFS_FILL_ARGS) { - char mebuffer[512]; vm_map_t map = &p->p_vmspace->vm_map; vm_map_entry_t entry, tmp_entry; vm_object_t obj, tobj, lobj; vm_offset_t saved_end; vm_ooffset_t off = 0; char *name = "", *freename = NULL; - size_t len; ino_t ino; unsigned int last_timestamp; int ref_count, shadow_count, flags; @@ -894,13 +892,9 @@ if (uio->uio_rw != UIO_READ) return (EOPNOTSUPP); - if (uio->uio_offset != 0) - return (0); - error = 0; vm_map_lock_read(map); - for (entry = map->header.next; - ((uio->uio_resid > 0) && (entry != &map->header)); + for (entry = map->header.next; entry != &map->header; entry = entry->next) { name = ""; freename = NULL; @@ -949,7 +943,7 @@ * format: * start, end, access, offset, major, minor, inode, name. */ - snprintf(mebuffer, sizeof mebuffer, + error = sbuf_printf(sb, "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n", (u_long)entry->start, (u_long)entry->end, (entry->protection & VM_PROT_READ)?"r":"-", @@ -965,18 +959,11 @@ ); if (freename) free(freename, M_TEMP); - len = strlen(mebuffer); - if (len > uio->uio_resid) - len = uio->uio_resid; /* - * XXX We should probably return - * EFBIG here, as in procfs. - */ last_timestamp = map->timestamp; vm_map_unlock_read(map); - error = uiomove(mebuffer, len, uio); + if (error == -1) + return (0); vm_map_lock_read(map); - if (error) - break; if (last_timestamp + 1 != map->timestamp) { /* * Look again for the entry because the map was [-- Attachment #3 --] ELF P 4 4 ( $ ! 0 0 0 0' 0' h D D' D' Qtd % . ' ! # ) , * - $ &
