mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 23:12:25 -05:00 
			
		
		
		
	- codeberg.org/gruf/go-bytesize v1.0.3 -> v1.0.4 - codeberg.org/gruf/go-kv/v2 v2.0.6 -> v2.0.7 - codeberg.org/gruf/go-mutexes v1.5.2 -> v1.5.3 - codeberg.org/gruf/go-structr v0.9.7 -> v0.9.8 - codeberg.org/gruf/go-ffmpreg v0.6.8 -> v0.6.9 - github.com/tomnomnom/linkheader HEAD@2018 -> HEAD@2025 all of the above codeberg.org/gruf updates are in preparation for Go1.25, except for bytesize, and also ffmpreg which is a rebuild with the latest version of ffmpeg (v5.1.7) Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4386 Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			876 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			876 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| //go:build go1.22 && !go1.26
 | |
| 
 | |
| package mutexes
 | |
| 
 | |
| import (
 | |
| 	"sync"
 | |
| 	"sync/atomic"
 | |
| 	"unsafe"
 | |
| )
 | |
| 
 | |
| // syncCond_last_ticket is an unsafe function that returns
 | |
| // the ticket of the last awoken / notified goroutine by a
 | |
| // a sync.Cond{}. it relies on expected memory layout.
 | |
| func syncCond_last_ticket(c *sync.Cond) uint32 {
 | |
| 
 | |
| 	// NOTE: must remain in
 | |
| 	// sync with runtime.notifyList{}.
 | |
| 	//
 | |
| 	// goexperiment.staticlockranking
 | |
| 	// does change it slightly, but
 | |
| 	// this does not alter the first
 | |
| 	// 2 fields which are all we need.
 | |
| 	type notifyList struct {
 | |
| 		_      uint32
 | |
| 		notify uint32
 | |
| 		// ... other fields
 | |
| 	}
 | |
| 
 | |
| 	// NOTE: must remain in
 | |
| 	// sync with sync.Cond{}.
 | |
| 	type syncCond struct {
 | |
| 		_ struct{}
 | |
| 		L sync.Locker
 | |
| 		n notifyList
 | |
| 		// ... other fields
 | |
| 	}
 | |
| 
 | |
| 	// This field must be atomcially accessed.
 | |
| 	cptr := (*syncCond)(unsafe.Pointer(c))
 | |
| 	return atomic.LoadUint32(&cptr.n.notify)
 | |
| }
 |