//
// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//

#pragma once

namespace armnnUtils
{
namespace Processes
{

int GetCurrentId();

}
}
