From owner-freebsd-hackers@FreeBSD.ORG Wed Nov 10 13:08:52 2004 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 39DE316A4CE for ; Wed, 10 Nov 2004 13:08:52 +0000 (GMT) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9E0F043D49 for ; Wed, 10 Nov 2004 13:08:40 +0000 (GMT) (envelope-from avg@icyb.net.ua) Received: from [212.40.38.87] (oddity.topspin.kiev.ua [212.40.38.87]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id PAA01803 for ; Wed, 10 Nov 2004 15:05:46 +0200 (EET) (envelope-from avg@icyb.net.ua) Message-ID: <41921229.9080404@icyb.net.ua> Date: Wed, 10 Nov 2004 15:05:45 +0200 From: Andriy Gapon User-Agent: Mozilla Thunderbird 0.9 (X11/20041108) X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset=KOI8-U Content-Transfer-Encoding: 7bit X-Mailman-Approved-At: Wed, 10 Nov 2004 13:09:30 +0000 Subject: syscall: td_retval and zero return value X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2004 13:08:52 -0000 I have very little assembler/x86 knowledge. Could anyone please help me understand what it means to assign a non-zero value to td_retval in a system call when return value of the call is zero/success? I see in syscall() in src/sys/i386/i386/trap.c (btw is this the right place?) that in such circumstances value from td_retval[] is put into EAX and EDX registers and PSL_C (carry bit) is cleared in status/flags register in a stack frame of a calling process. But I don't understand what it practically means for the calling process. Thank you in advance. -- Andriy Gapon