From owner-freebsd-hackers Sat May 13 0: 9:32 2000 Delivered-To: freebsd-hackers@freebsd.org Received: from ns3.khmere.com (216-59-86-175.usa2.flashcom.net [216.59.86.175]) by hub.freebsd.org (Postfix) with ESMTP id 1BE6D37B571 for ; Sat, 13 May 2000 00:09:30 -0700 (PDT) (envelope-from nathan@khmere.com) Received: from khmere.com (ns2.khmere.com [216.59.86.176]) by ns3.khmere.com (8.9.3/8.8.7) with ESMTP id AAA93475; Sat, 13 May 2000 00:11:06 -0700 (PDT) Message-ID: <391D61DA.C9793AAC@khmere.com> Date: Sat, 13 May 2000 07:08:27 -0700 From: nathan@khmere.com X-Mailer: Mozilla 4.72 [en] (X11; U; Linux 2.2.15 i586) X-Accept-Language: en MIME-Version: 1.0 To: Alfred Perlstein Cc: "hackers@FreeBSD.ORG" Subject: Re: mremap help ? or no support for FreeBSD ? so do what ? References: <391D39E0.934224E4@khmere.com> <20000512235721.A28383@fw.wintelcom.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Alfred Perlstein wrote: > * nathan@khmere.com [000512 21:54] wrote: > > I know that this was discussed in the past but I can't find out what to > > do ? > > > > In Linux if I have to resize a mmap 'ed object I can just use mremap.... > > but in FreeBSD if, I want to resize it what do I do ? > > > > I have tried writing past where I know the end is and it kinda works ? > > but why ? > > > > Is their a better solution besides just writing to the file and then > > calling msync ? > > > > Is their new plans to make a mremap call for FreeBSD 4.x ? > > no. > > > > > Or am I just sh%t out of luck ? > > Possibly, but if you describe what you are trying to accomplish > there may be some advice available. Your misuse of msync makes me > think that a rethinking of what you are trying to accomplish may > be a good idea. Please explain what makes you need mremap which > is not portable to any version of unix. I'm assuming you want your > app to work on Solaris and other commercial systems. > > -- > -Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org] > "I have the heart of a child; I keep it in a jar on my desk." > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message Sorry ! Ok here is a snipit of what I am trying to do.... fstat(fd, &st); if( (base = (caddr_t *) mmap(0, st.st_size, ( PROT_READ | PROT_WRITE ) , MAP_SHARED, fd, 0)) == MAP_FAILED) { MSG_ERR("cannot mmap file, exiting ! "); _exit(1); } /* say st.st_size = 200, and I want to add to the end of the file more data */ base += 200; /* we are now at the end */ rec = (stuct rec_t *) base; rec->len = 200; /* we are writing to the buff, but we are past.... */ memmove(rec->data, data, 100); msync(base, 0, (st.st_len + rec->len), MS_ASYNC); the struct rec_t is an example of a stuct that I want to append to the buf and make another reccord. If base was a regular pointer we would segfault.... cause we are past the pointers buf.... but it kinda works.. meaning it will write and add and sometimes and not segfault... sometimes... or I can do this: rec = (stuct rec_t *) base; rec->len = 200; memmove(rec->data, data, 100); write(fd, (char *) rec, rec->len); msync(base, 0, (st.st_len + rec->len), MS_ASYNC); After I append to the file and then msync. I should be able to read the reccord that I just added from base. base should reflect the file.... right ? I want to make things simple and only append to the buffer "base" and not have to re-open the file and write to it then msync it back to mem. I know that some of this under FreeBSD "automatic" meaning that the changes made to the file are seen by "base" even though I do not call msync..... but in order to keep things clear, I will msync. I hope that this wasn't too confusing... I am not good at explanations.... or spelling.... thank you nathan To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message