The Pedigree Project
0.1
src
modules
subsys
posix
advisory-lock-state.h
1
/* Copyright (c) 2026, Pedigree Developers. */
2
#ifndef POSIX_ADVISORY_LOCK_STATE_H
3
#define POSIX_ADVISORY_LOCK_STATE_H
4
5
#include "pedigree/kernel/compiler.h"
6
#include "pedigree/kernel/processor/types.h"
7
8
#include "advisory-lock-table.h"
9
10
class
EXPORTED_PUBLIC
AdvisoryOwner
{
11
public
:
12
using
Kind = PosixAdvisory::OwnerKind;
13
explicit
AdvisoryOwner
(Kind kind);
14
~AdvisoryOwner
() =
default
;
15
AdvisoryOwner
(
const
AdvisoryOwner
&) =
delete
;
16
AdvisoryOwner
& operator=(
const
AdvisoryOwner
&) =
delete
;
17
uint64_t
identity
()
const
{
18
return
m_Id;
19
}
20
21
private
:
22
friend
class
PosixAdvisoryLocks
;
23
enum
State : uint8_t { Unused, Open, Closed };
24
const
uint64_t m_Id;
25
const
Kind m_Kind;
26
uint8_t m_State = Unused;
27
};
28
29
void
posix_advisory_descriptor_closed(
AdvisoryOwner
& owner, uintptr_t inodeIdentity);
30
void
posix_advisory_owner_closed(
AdvisoryOwner
& owner);
31
32
// Admission is only the short fd/OFD identity check; it cannot take an OFD lock.
33
using
PosixAdvisoryAdmission = bool (*)(
void
* context);
34
int
posix_advisory_apply(
AdvisoryOwner
& owner,
PosixAdvisory::Grant
request,
bool
wait,
35
PosixAdvisoryAdmission admission =
nullptr
,
void
* context =
nullptr
);
36
int
posix_advisory_query(
AdvisoryOwner
& owner,
PosixAdvisory::Grant
request,
37
PosixAdvisory::Grant
& conflict,
bool
& found);
38
39
#endif
AdvisoryOwner
Definition
advisory-lock-state.h:10
PosixAdvisoryLocks
Definition
advisory-lock-state.cc:21
PosixAdvisory::Grant
Definition
advisory-lock-table.h:24
identity
Definition
futex-contracts.c:32
Generated on Tue Sep 22 2026 06:05:42 for The Pedigree Project by
1.9.8