From owner-p4-projects@FreeBSD.ORG Thu Aug 2 18:15:08 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 773CD16A420; Thu, 2 Aug 2007 18:15:08 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EA07B16A41B for ; Thu, 2 Aug 2007 18:15:07 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from anuket.mj.niksun.com (gwnew.niksun.com [65.115.46.162]) by mx1.freebsd.org (Postfix) with ESMTP id AFE7013C4CA for ; Thu, 2 Aug 2007 18:15:07 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from niksun.com (anuket [10.70.0.5]) by anuket.mj.niksun.com (8.13.6/8.13.6) with ESMTP id l72Hv1QT029053; Thu, 2 Aug 2007 13:57:01 -0400 (EDT) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: Roman Divacky Date: Thu, 2 Aug 2007 13:56:34 -0400 User-Agent: KMail/1.6.2 References: <200708021130.l72BUHrY077198@repoman.freebsd.org> In-Reply-To: <200708021130.l72BUHrY077198@repoman.freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200708021356.58217.jkim@FreeBSD.org> X-Virus-Scanned: ClamAV version 0.90.2, clamav-milter version 0.90.2 on anuket.mj.niksun.com X-Virus-Status: Clean Cc: perforce@FreeBSD.org Subject: Re: PERFORCE change 124529 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Aug 2007 18:15:08 -0000 On Thursday 02 August 2007 07:30 am, Roman Divacky wrote: > + > +/* XXX: fake one.. waiting for ssouhlal to commit his patch */ > +int > +linux_sched_getaffinity(struct thread *td, struct > linux_sched_getaffinity_args *args) +{ > + int error; > + cpumask_t i = ~0; > + > + if (args->len < sizeof(cpumask_t)) > + return (EINVAL); > + > + error = copyout(&i, args->user_mask_ptr, sizeof(cpumask_t)); > + return (error); > +} Er, shouldn't it be more like this? int linux_sched_getaffinity(struct thread *td, struct linux_sched_getaffinity_args *args) { uint8_t *mask; int error; if (args->cpusetsize < sizeof(cpumask_t)) return (EINVAL); mask = malloc(args->cpusetsize, M_LINUX, M_WAITOK); memset(mask, 0xff, args->cpusetsize); error = copyout(mask, args->mask, args->cpusetsize); free(mask, M_LINUX); return (error); } The reason is because Linux can ask longer CPU mask than FreeBSD's. The (old) default used to be 1024-bit (128-byte) mask. So, a lot of Linux apps still do that. Also, can you match args to the Linux API? int sched_getaffinity(pid_t pid, unsigned int cpusetsize, cpu_set_t *mask); s/len/cpusetsize/ s/user_mask_ptr/mask/ Thanks, Jung-uk Kim