Add port::GetProcessID() (#8693)

Summary:
Useful in some places for object uniqueness across processes.
Currently used for generating a host-wide identifier of Cache objects
but expected to be used soon in some unique id generation code.

`int64_t` is chosen for return type because POSIX uses signed integer type,
usually `int`, for `pid_t` and Windows uses `DWORD`, which is `uint32_t`.

Future work: avoid copy-pasted declarations in port_*.h, perhaps with
port_common.h always included from port.h

Pull Request resolved: https://github.com/facebook/rocksdb/pull/8693

Test Plan: manual for now

Reviewed By: ajkr, anand1976

Differential Revision: D30492876

Pulled By: pdillinger

fbshipit-source-id: 39fc2788623cc9f4787866bdb67a4d183dde7eef
This commit is contained in:
Peter Dillinger 2021-08-24 17:45:01 -07:00 committed by Facebook GitHub Bot
parent 229350ef48
commit 318fe6941a
5 changed files with 11 additions and 1 deletions

View File

@ -23,6 +23,7 @@
#include "cache/cache_entry_stats.h" #include "cache/cache_entry_stats.h"
#include "db/column_family.h" #include "db/column_family.h"
#include "db/db_impl/db_impl.h" #include "db/db_impl/db_impl.h"
#include "port/port.h"
#include "rocksdb/system_clock.h" #include "rocksdb/system_clock.h"
#include "rocksdb/table.h" #include "rocksdb/table.h"
#include "table/block_based/cachable_entry.h" #include "table/block_based/cachable_entry.h"
@ -602,7 +603,8 @@ void InternalStats::CacheEntryRoleStats::BeginCollection(
++collection_count; ++collection_count;
role_map_ = CopyCacheDeleterRoleMap(); role_map_ = CopyCacheDeleterRoleMap();
std::ostringstream str; std::ostringstream str;
str << cache->Name() << "@" << static_cast<void*>(cache); str << cache->Name() << "@" << static_cast<void*>(cache) << "#"
<< port::GetProcessID();
cache_id = str.str(); cache_id = str.str();
cache_capacity = cache->GetCapacity(); cache_capacity = cache->GetCapacity();
} }

View File

@ -263,6 +263,8 @@ void SetCpuPriority(ThreadId id, CpuPriority priority) {
#endif #endif
} }
int64_t GetProcessID() { return getpid(); }
} // namespace port } // namespace port
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

View File

@ -219,5 +219,7 @@ using ThreadId = pid_t;
extern void SetCpuPriority(ThreadId id, CpuPriority priority); extern void SetCpuPriority(ThreadId id, CpuPriority priority);
int64_t GetProcessID();
} // namespace port } // namespace port
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

View File

@ -277,6 +277,8 @@ void SetCpuPriority(ThreadId id, CpuPriority priority) {
(void)priority; (void)priority;
} }
int64_t GetProcessID() { return GetCurrentProcessId(); }
} // namespace port } // namespace port
} // namespace ROCKSDB_NAMESPACE } // namespace ROCKSDB_NAMESPACE

View File

@ -347,6 +347,8 @@ using ThreadId = int;
extern void SetCpuPriority(ThreadId id, CpuPriority priority); extern void SetCpuPriority(ThreadId id, CpuPriority priority);
int64_t GetProcessID();
} // namespace port } // namespace port