From e46ae80b00eab500bd93a86c8077a0595ce79de0 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 5 Jan 2022 15:46:42 -0800 Subject: [PATCH] Refactor DllImports in Microsoft.Extensions.Hosting.Systemd Refactor the DllImports in Microsoft.Extensions.Hosting.Systemd into Common/src/Interop following the interop guidelines. --- .../Common/src/Interop/Unix/Interop.Libraries.cs | 2 ++ .../src/Interop/Unix/libc/Interop.GetParentPid.cs | 13 +++++++++++++ .../src/Microsoft.Extensions.Hosting.Systemd.csproj | 5 +++++ .../src/SystemdHelpers.cs | 6 +----- 4 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs diff --git a/src/libraries/Common/src/Interop/Unix/Interop.Libraries.cs b/src/libraries/Common/src/Interop/Unix/Interop.Libraries.cs index 8e2d9046af8987..1a0114cca21895 100644 --- a/src/libraries/Common/src/Interop/Unix/Interop.Libraries.cs +++ b/src/libraries/Common/src/Interop/Unix/Interop.Libraries.cs @@ -5,6 +5,8 @@ internal static partial class Interop { internal static partial class Libraries { + internal const string Libc = "libc"; + // Shims internal const string SystemNative = "libSystem.Native"; internal const string NetSecurityNative = "libSystem.Net.Security.Native"; diff --git a/src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs b/src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs new file mode 100644 index 00000000000000..95b27abf158287 --- /dev/null +++ b/src/libraries/Common/src/Interop/Unix/libc/Interop.GetParentPid.cs @@ -0,0 +1,13 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Runtime.InteropServices; + +internal static partial class Interop +{ + internal static partial class libc + { + [GeneratedDllImport(Libraries.Libc, EntryPoint = "getppid")] + internal static partial int GetParentPid(); + } +} diff --git a/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/Microsoft.Extensions.Hosting.Systemd.csproj b/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/Microsoft.Extensions.Hosting.Systemd.csproj index 5d375e67feab7c..b9faefd40f2f07 100644 --- a/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/Microsoft.Extensions.Hosting.Systemd.csproj +++ b/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/Microsoft.Extensions.Hosting.Systemd.csproj @@ -18,6 +18,11 @@ + + + + + diff --git a/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdHelpers.cs b/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdHelpers.cs index 244e41c69e179d..b582580c9e97fe 100644 --- a/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdHelpers.cs +++ b/src/libraries/Microsoft.Extensions.Hosting.Systemd/src/SystemdHelpers.cs @@ -4,7 +4,6 @@ using System; using System.Globalization; using System.IO; -using System.Runtime.InteropServices; using System.Text; namespace Microsoft.Extensions.Hosting.Systemd @@ -34,7 +33,7 @@ private static bool CheckParentIsSystemd() try { // Check whether our direct parent is 'systemd'. - int parentPid = GetParentPid(); + int parentPid = Interop.libc.GetParentPid(); string ppidString = parentPid.ToString(NumberFormatInfo.InvariantInfo); byte[] comm = File.ReadAllBytes("/proc/" + ppidString + "/comm"); return comm.AsSpan().SequenceEqual(Encoding.ASCII.GetBytes("systemd\n")); @@ -45,8 +44,5 @@ private static bool CheckParentIsSystemd() return false; } - - [GeneratedDllImport("libc", EntryPoint = "getppid")] - private static partial int GetParentPid(); } }