mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Plumbing context.Context to DecRef() and Release().
context is passed to DecRef() and Release() which is needed for SO_LINGER implementation. PiperOrigin-RevId: 324672584
This commit is contained in:
committed by
gVisor bot
parent
ef11bb936b
commit
b2ae7ea1bb
@@ -59,9 +59,9 @@ type EventFileDescription struct {
|
||||
var _ vfs.FileDescriptionImpl = (*EventFileDescription)(nil)
|
||||
|
||||
// New creates a new event fd.
|
||||
func New(vfsObj *vfs.VirtualFilesystem, initVal uint64, semMode bool, flags uint32) (*vfs.FileDescription, error) {
|
||||
func New(ctx context.Context, vfsObj *vfs.VirtualFilesystem, initVal uint64, semMode bool, flags uint32) (*vfs.FileDescription, error) {
|
||||
vd := vfsObj.NewAnonVirtualDentry("[eventfd]")
|
||||
defer vd.DecRef()
|
||||
defer vd.DecRef(ctx)
|
||||
efd := &EventFileDescription{
|
||||
val: initVal,
|
||||
semMode: semMode,
|
||||
@@ -107,7 +107,7 @@ func (efd *EventFileDescription) HostFD() (int, error) {
|
||||
}
|
||||
|
||||
// Release implements FileDescriptionImpl.Release()
|
||||
func (efd *EventFileDescription) Release() {
|
||||
func (efd *EventFileDescription) Release(context.Context) {
|
||||
efd.mu.Lock()
|
||||
defer efd.mu.Unlock()
|
||||
if efd.hostfd >= 0 {
|
||||
|
||||
@@ -36,16 +36,16 @@ func TestEventFD(t *testing.T) {
|
||||
for _, initVal := range initVals {
|
||||
ctx := contexttest.Context(t)
|
||||
vfsObj := &vfs.VirtualFilesystem{}
|
||||
if err := vfsObj.Init(); err != nil {
|
||||
if err := vfsObj.Init(ctx); err != nil {
|
||||
t.Fatalf("VFS init: %v", err)
|
||||
}
|
||||
|
||||
// Make a new eventfd that is writable.
|
||||
eventfd, err := New(vfsObj, initVal, false, linux.O_RDWR)
|
||||
eventfd, err := New(ctx, vfsObj, initVal, false, linux.O_RDWR)
|
||||
if err != nil {
|
||||
t.Fatalf("New() failed: %v", err)
|
||||
}
|
||||
defer eventfd.DecRef()
|
||||
defer eventfd.DecRef(ctx)
|
||||
|
||||
// Register a callback for a write event.
|
||||
w, ch := waiter.NewChannelEntry(nil)
|
||||
@@ -74,16 +74,16 @@ func TestEventFD(t *testing.T) {
|
||||
func TestEventFDStat(t *testing.T) {
|
||||
ctx := contexttest.Context(t)
|
||||
vfsObj := &vfs.VirtualFilesystem{}
|
||||
if err := vfsObj.Init(); err != nil {
|
||||
if err := vfsObj.Init(ctx); err != nil {
|
||||
t.Fatalf("VFS init: %v", err)
|
||||
}
|
||||
|
||||
// Make a new eventfd that is writable.
|
||||
eventfd, err := New(vfsObj, 0, false, linux.O_RDWR)
|
||||
eventfd, err := New(ctx, vfsObj, 0, false, linux.O_RDWR)
|
||||
if err != nil {
|
||||
t.Fatalf("New() failed: %v", err)
|
||||
}
|
||||
defer eventfd.DecRef()
|
||||
defer eventfd.DecRef(ctx)
|
||||
|
||||
statx, err := eventfd.Stat(ctx, vfs.StatOptions{
|
||||
Mask: linux.STATX_BASIC_STATS,
|
||||
|
||||
Reference in New Issue
Block a user