From owner-freebsd-hackers@FreeBSD.ORG Thu Apr 12 18:55:33 2012 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7CFFA106564A for ; Thu, 12 Apr 2012 18:55:33 +0000 (UTC) (envelope-from maninya@gmail.com) Received: from mail-gx0-f182.google.com (mail-gx0-f182.google.com [209.85.161.182]) by mx1.freebsd.org (Postfix) with ESMTP id 39C9C8FC0A for ; Thu, 12 Apr 2012 18:55:33 +0000 (UTC) Received: by ggnk4 with SMTP id k4so1586463ggn.13 for ; Thu, 12 Apr 2012 11:55:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=uOPVo6TlaT0FSqcyqOf7ZIkeIDr1A/fk6odmf537Rk0=; b=N14oZBE/seC+NdBf3EhMzTgZLrPyI3Q8QLVxG2O81Wlt5WxR+iqk0/4KCWhvoMmUQ9 HnanuPTojv2LGINAr+aX2Ergkct172TJbJPpKVriZFtXc8OD946zTCJ1Roub/4Jb36Do ugFYwfVmlu78nGLhB7Qq3myi3pKMGi1/46+S78o98NovuYtXZiFSM/wYA7yvTvvSRHqs PZYrincEBJxioecMAxP52WraSHWVVSqvV8sIvGIJoOWfaw/JDVY3mQrBmWuc3zXH95mI u0IjzvPqysr4g2f3veDT0qg3byXWfFkIq6xpbiQZ+TsGwcD3nvGdCt2KPod9FESEoy9h fMuw== MIME-Version: 1.0 Received: by 10.236.77.70 with SMTP id c46mr3285934yhe.5.1334256932574; Thu, 12 Apr 2012 11:55:32 -0700 (PDT) Received: by 10.146.238.13 with HTTP; Thu, 12 Apr 2012 11:55:32 -0700 (PDT) Date: Fri, 13 Apr 2012 00:25:32 +0530 Message-ID: From: Maninya M To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: mmap segmentation fault X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Apr 2012 18:55:33 -0000 Hello, I want to allocate memory at a specified address location 'a' of size 'b'. I wrote code below to do it, but I'm getting a seg fault. How can I solve this? How can I get the allocated memory at the required address? int main() { unsigned int *addr,*newaddr; unsigned long a=134516736,a1; unsigned long b=3895296; unsigned long flags =6; a1=(a&0xffff0000); printf("%x\n",(void *)a); newaddr=(unsigned int *)mmap((void *)a,b,6,MAP_ANONYMOUS|MAP_FIXED,-1,0); if(newaddr==MAP_FAILED) printf("mmap failed"); else printf("sucess %x",newaddr); return 0; } Output is 8049000 Segmentation fault -- Maninya