From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6443748886841393152 X-Received: by 10.28.64.193 with SMTP id n184mr22046wma.19.1500302200567; Mon, 17 Jul 2017 07:36:40 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 10.28.148.201 with SMTP id w192ls174918wmd.4.gmail; Mon, 17 Jul 2017 07:36:40 -0700 (PDT) X-Received: by 10.223.171.166 with SMTP id s35mr1412075wrc.4.1500302200264; Mon, 17 Jul 2017 07:36:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1500302200; cv=none; d=google.com; s=arc-20160816; b=ygzxYptw1RZJy9VFmm8AYYIaujFraMPFnkYJXTt94JNHTFCPAdxWUUT3wM6fERnYbK EYObGgot014k0NVH/eu0zQ7oJ1fHz0Wrjhl5PZXsWwJ8lnbjnjMjMu1PJUgzi49z8IW8 eLnPeu/YKPrZf7KU6D2Iu8WVXZFfAGrcyph/NKuu+55LvDHdOJniaveRr6hcC4CFxzl1 he8lH27GiP/TSfQocuo95OuQ+gTXvyovoe3OgTVt9jyr3upDpEq52tYBUwqO5gnHPJib 8FbRcw1avFjhlEJImCupsxzCZYSTLiIpVoh0bmKlP5S9iUQBAw7i89o8EXdb6uapVBCa JbZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:arc-authentication-results; bh=9wBhPpPU1/fo6g57RXrLYIW61tZOMjBTEnB1rNttIC0=; b=s/F2UzBaHQ944U4Da/XQvivr3x5e+eC9KVjLc55V7303OuriVbP7vVpdD3rkuCY775 mQuzqjU/b6mL4rMPLEAMYsVZz2IklgKSLVdfsyt3oC+e9P5KuAt21vY3h0bxJJRCCJpf HzkhWtZoPLX3u2+DagkHPfkA3DZve1uZ3vqEeZMNZPpD58u1Puxm9GeWSNMzx6XhR/vd 7dd5LlMgab+UAr0KvTcO+B903WRI4xPlOqsolezwLusrbfF9JeXyXWbSWmKmWRdQZyy5 1nIj/eU8fctciVdGYyeEmgt/WCIZh7uSPga9H17PZNHbuKByWXqUBdku1DpHCy1yHwGU Rqvw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 192.35.17.14 is neither permitted nor denied by best guess record for domain of henning.schild@siemens.com) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id r131si3987010wmd.2.2017.07.17.07.36.40 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Jul 2017 07:36:40 -0700 (PDT) Received-SPF: neutral (google.com: 192.35.17.14 is neither permitted nor denied by best guess record for domain of henning.schild@siemens.com) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 192.35.17.14 is neither permitted nor denied by best guess record for domain of henning.schild@siemens.com) smtp.mailfrom=henning.schild@siemens.com Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id v6HEadX6007326 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 17 Jul 2017 16:36:39 +0200 Received: from md1em3qc.ww002.siemens.net ([139.25.68.40]) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id v6HEadgg013724; Mon, 17 Jul 2017 16:36:39 +0200 From: Henning Schild To: isar-users@googlegroups.com Cc: Henning Schild Subject: [PATCH 1/2] lib/alchemy: fix rt_mutex_create return values Date: Mon, 17 Jul 2017 16:38:20 +0200 Message-Id: <20170717143822.11844-1-henning.schild@siemens.com> X-Mailer: git-send-email 2.13.0 X-TUID: cN05DLxLfl61 From: Henning Schild rt_mutex_create turned an -EPERM from the cobalt kernel syscall path into an -EEXIST. If you have a model where threads create their shadows on demand, when seeing the first -EPERM, that return value must not be changed. Signed-off-by: Henning Schild --- lib/alchemy/mutex.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/alchemy/mutex.c b/lib/alchemy/mutex.c index 3aa55dd521..8c5e5f5968 100644 --- a/lib/alchemy/mutex.c +++ b/lib/alchemy/mutex.c @@ -96,7 +96,8 @@ static struct registry_operations registry_ops; * registered mutex. * * - -EPERM is returned if this service was called from an - * asynchronous context. + * asynchronous context. Or - in dual kernel - when the thread is not + * allowed to issue syscalls. * * @apitags{mode-unrestricted, switch-secondary} * @@ -147,12 +148,16 @@ int rt_mutex_create(RT_MUTEX *mutex, const char *name) ret = 0; } - if (syncluster_addobj(&alchemy_mutex_table, mcb->name, &mcb->cobj)) { + if (ret = syncluster_addobj(&alchemy_mutex_table, mcb->name, + &mcb->cobj)) + { registry_destroy_file(&mcb->fsobj); xnfree(mcb); - ret = -EEXIST; - } else + if (ret != -EPERM) + ret = -EEXIST; + } else { mutex->handle = mainheap_ref(mcb, uintptr_t); + } out: CANCEL_RESTORE(svc); -- 2.13.0