From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60887) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fG7m1-0001Oy-Mj for qemu-devel@nongnu.org; Tue, 08 May 2018 14:55:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fG7lx-0002st-3A for qemu-devel@nongnu.org; Tue, 08 May 2018 14:55:40 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:33890 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fG7lw-0002se-T7 for qemu-devel@nongnu.org; Tue, 08 May 2018 14:55:37 -0400 References: <20180508163639.7138-1-laurent@vivier.eu> From: Eric Blake Message-ID: Date: Tue, 8 May 2018 13:55:22 -0500 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] linux-user: fix convertion of flock/flock64 l_type field List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Filippov , Laurent Vivier Cc: Riku Voipio , qemu-devel On 05/08/2018 12:08 PM, Max Filippov wrote: > On Tue, May 8, 2018 at 9:36 AM, Laurent Vivier wrote: In the subject, s/convertion/conversion/ >> As l_type values (F_RDLCK, F_WRLCK, F_UNLCK, F_EXLCK, F_SHLCK) >> are not bitmasks, we can't use target_to_host_bitmask() and >> host_to_target_bitmask() to convert them. >> >> Introduce target_to_host_flock() and host_to_target_flock() >> to convert values between host and target. >> >> +static unsigned int host_to_target_flock(unsigned int type) >> +{ >> + switch (type) { >> +#define TRANSTBL_CONVERT(a) case a: return TARGET_##a; >> + TRANSTBL_CONVERT(F_RDLCK) >> + TRANSTBL_CONVERT(F_WRLCK) >> + TRANSTBL_CONVERT(F_UNLCK) >> + TRANSTBL_CONVERT(F_EXLCK) >> + TRANSTBL_CONVERT(F_SHLCK) >> +#undef TRANSTBL_CONVERT >> + } >> + return type; >> +} >> > > There's a duplication. Wouldn't it be better if it was done like the following: > > #define FLOCK_TRANSTBL \ > switch (type) { > TRANSTBL_CONVERT(F_RDLCK) \ If you do this, I'd lean towards omitting the trailing ; from TRANSTBL_CONVERT() and sticking it in FLOCK_TRANSTBL instead (it looks weird to see a statement-like macro called without a ';'). -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org