* only shim v2 runc v2 ("io.containerd.runc.v2") is supported
* only PID metrics is implemented. Others should be implemented in separate PRs.
* lots of code duplication in v1 metrics and v2 metrics. Dedupe should be separate PR.
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
		
	
		
			
				
	
	
		
			144 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package asm
 | 
						|
 | 
						|
//go:generate stringer -output func_string.go -type=BuiltinFunc
 | 
						|
 | 
						|
// BuiltinFunc is a built-in eBPF function.
 | 
						|
type BuiltinFunc int32
 | 
						|
 | 
						|
// eBPF built-in functions
 | 
						|
//
 | 
						|
// You can renegerate this list using the following gawk script:
 | 
						|
//
 | 
						|
//    /FN\(.+\),/ {
 | 
						|
//      match($1, /\((.+)\)/, r)
 | 
						|
//      split(r[1], p, "_")
 | 
						|
//      printf "Fn"
 | 
						|
//      for (i in p) {
 | 
						|
//        printf "%s%s", toupper(substr(p[i], 1, 1)), substr(p[i], 2)
 | 
						|
//      }
 | 
						|
//      print ""
 | 
						|
//    }
 | 
						|
//
 | 
						|
// The script expects include/uapi/linux/bpf.h as it's input.
 | 
						|
const (
 | 
						|
	FnUnspec BuiltinFunc = iota
 | 
						|
	FnMapLookupElem
 | 
						|
	FnMapUpdateElem
 | 
						|
	FnMapDeleteElem
 | 
						|
	FnProbeRead
 | 
						|
	FnKtimeGetNs
 | 
						|
	FnTracePrintk
 | 
						|
	FnGetPrandomU32
 | 
						|
	FnGetSmpProcessorId
 | 
						|
	FnSkbStoreBytes
 | 
						|
	FnL3CsumReplace
 | 
						|
	FnL4CsumReplace
 | 
						|
	FnTailCall
 | 
						|
	FnCloneRedirect
 | 
						|
	FnGetCurrentPidTgid
 | 
						|
	FnGetCurrentUidGid
 | 
						|
	FnGetCurrentComm
 | 
						|
	FnGetCgroupClassid
 | 
						|
	FnSkbVlanPush
 | 
						|
	FnSkbVlanPop
 | 
						|
	FnSkbGetTunnelKey
 | 
						|
	FnSkbSetTunnelKey
 | 
						|
	FnPerfEventRead
 | 
						|
	FnRedirect
 | 
						|
	FnGetRouteRealm
 | 
						|
	FnPerfEventOutput
 | 
						|
	FnSkbLoadBytes
 | 
						|
	FnGetStackid
 | 
						|
	FnCsumDiff
 | 
						|
	FnSkbGetTunnelOpt
 | 
						|
	FnSkbSetTunnelOpt
 | 
						|
	FnSkbChangeProto
 | 
						|
	FnSkbChangeType
 | 
						|
	FnSkbUnderCgroup
 | 
						|
	FnGetHashRecalc
 | 
						|
	FnGetCurrentTask
 | 
						|
	FnProbeWriteUser
 | 
						|
	FnCurrentTaskUnderCgroup
 | 
						|
	FnSkbChangeTail
 | 
						|
	FnSkbPullData
 | 
						|
	FnCsumUpdate
 | 
						|
	FnSetHashInvalid
 | 
						|
	FnGetNumaNodeId
 | 
						|
	FnSkbChangeHead
 | 
						|
	FnXdpAdjustHead
 | 
						|
	FnProbeReadStr
 | 
						|
	FnGetSocketCookie
 | 
						|
	FnGetSocketUid
 | 
						|
	FnSetHash
 | 
						|
	FnSetsockopt
 | 
						|
	FnSkbAdjustRoom
 | 
						|
	FnRedirectMap
 | 
						|
	FnSkRedirectMap
 | 
						|
	FnSockMapUpdate
 | 
						|
	FnXdpAdjustMeta
 | 
						|
	FnPerfEventReadValue
 | 
						|
	FnPerfProgReadValue
 | 
						|
	FnGetsockopt
 | 
						|
	FnOverrideReturn
 | 
						|
	FnSockOpsCbFlagsSet
 | 
						|
	FnMsgRedirectMap
 | 
						|
	FnMsgApplyBytes
 | 
						|
	FnMsgCorkBytes
 | 
						|
	FnMsgPullData
 | 
						|
	FnBind
 | 
						|
	FnXdpAdjustTail
 | 
						|
	FnSkbGetXfrmState
 | 
						|
	FnGetStack
 | 
						|
	FnSkbLoadBytesRelative
 | 
						|
	FnFibLookup
 | 
						|
	FnSockHashUpdate
 | 
						|
	FnMsgRedirectHash
 | 
						|
	FnSkRedirectHash
 | 
						|
	FnLwtPushEncap
 | 
						|
	FnLwtSeg6StoreBytes
 | 
						|
	FnLwtSeg6AdjustSrh
 | 
						|
	FnLwtSeg6Action
 | 
						|
	FnRcRepeat
 | 
						|
	FnRcKeydown
 | 
						|
	FnSkbCgroupId
 | 
						|
	FnGetCurrentCgroupId
 | 
						|
	FnGetLocalStorage
 | 
						|
	FnSkSelectReuseport
 | 
						|
	FnSkbAncestorCgroupId
 | 
						|
	FnSkLookupTcp
 | 
						|
	FnSkLookupUdp
 | 
						|
	FnSkRelease
 | 
						|
	FnMapPushElem
 | 
						|
	FnMapPopElem
 | 
						|
	FnMapPeekElem
 | 
						|
	FnMsgPushData
 | 
						|
	FnMsgPopData
 | 
						|
	FnRcPointerRel
 | 
						|
	FnSpinLock
 | 
						|
	FnSpinUnlock
 | 
						|
	FnSkFullsock
 | 
						|
	FnTcpSock
 | 
						|
	FnSkbEcnSetCe
 | 
						|
	FnGetListenerSock
 | 
						|
	FnSkcLookupTcp
 | 
						|
	FnTcpCheckSyncookie
 | 
						|
	FnSysctlGetName
 | 
						|
	FnSysctlGetCurrentValue
 | 
						|
	FnSysctlGetNewValue
 | 
						|
	FnSysctlSetNewValue
 | 
						|
	FnStrtol
 | 
						|
	FnStrtoul
 | 
						|
	FnSkStorageGet
 | 
						|
	FnSkStorageDelete
 | 
						|
	FnSendSignal
 | 
						|
	FnTcpGenSyncookie
 | 
						|
)
 | 
						|
 | 
						|
// Call emits a function call.
 | 
						|
func (fn BuiltinFunc) Call() Instruction {
 | 
						|
	return Instruction{
 | 
						|
		OpCode:   OpCode(JumpClass).SetJumpOp(Call),
 | 
						|
		Constant: int64(fn),
 | 
						|
	}
 | 
						|
}
 |