func.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. package asm
  2. //go:generate stringer -output func_string.go -type=BuiltinFunc
  3. // BuiltinFunc is a built-in eBPF function.
  4. type BuiltinFunc int32
  5. func (_ BuiltinFunc) Max() BuiltinFunc {
  6. return maxBuiltinFunc - 1
  7. }
  8. // eBPF built-in functions
  9. //
  10. // You can regenerate this list using the following gawk script:
  11. //
  12. // /FN\(.+\),/ {
  13. // match($1, /\((.+)\)/, r)
  14. // split(r[1], p, "_")
  15. // printf "Fn"
  16. // for (i in p) {
  17. // printf "%s%s", toupper(substr(p[i], 1, 1)), substr(p[i], 2)
  18. // }
  19. // print ""
  20. // }
  21. //
  22. // The script expects include/uapi/linux/bpf.h as it's input.
  23. const (
  24. FnUnspec BuiltinFunc = iota
  25. FnMapLookupElem
  26. FnMapUpdateElem
  27. FnMapDeleteElem
  28. FnProbeRead
  29. FnKtimeGetNs
  30. FnTracePrintk
  31. FnGetPrandomU32
  32. FnGetSmpProcessorId
  33. FnSkbStoreBytes
  34. FnL3CsumReplace
  35. FnL4CsumReplace
  36. FnTailCall
  37. FnCloneRedirect
  38. FnGetCurrentPidTgid
  39. FnGetCurrentUidGid
  40. FnGetCurrentComm
  41. FnGetCgroupClassid
  42. FnSkbVlanPush
  43. FnSkbVlanPop
  44. FnSkbGetTunnelKey
  45. FnSkbSetTunnelKey
  46. FnPerfEventRead
  47. FnRedirect
  48. FnGetRouteRealm
  49. FnPerfEventOutput
  50. FnSkbLoadBytes
  51. FnGetStackid
  52. FnCsumDiff
  53. FnSkbGetTunnelOpt
  54. FnSkbSetTunnelOpt
  55. FnSkbChangeProto
  56. FnSkbChangeType
  57. FnSkbUnderCgroup
  58. FnGetHashRecalc
  59. FnGetCurrentTask
  60. FnProbeWriteUser
  61. FnCurrentTaskUnderCgroup
  62. FnSkbChangeTail
  63. FnSkbPullData
  64. FnCsumUpdate
  65. FnSetHashInvalid
  66. FnGetNumaNodeId
  67. FnSkbChangeHead
  68. FnXdpAdjustHead
  69. FnProbeReadStr
  70. FnGetSocketCookie
  71. FnGetSocketUid
  72. FnSetHash
  73. FnSetsockopt
  74. FnSkbAdjustRoom
  75. FnRedirectMap
  76. FnSkRedirectMap
  77. FnSockMapUpdate
  78. FnXdpAdjustMeta
  79. FnPerfEventReadValue
  80. FnPerfProgReadValue
  81. FnGetsockopt
  82. FnOverrideReturn
  83. FnSockOpsCbFlagsSet
  84. FnMsgRedirectMap
  85. FnMsgApplyBytes
  86. FnMsgCorkBytes
  87. FnMsgPullData
  88. FnBind
  89. FnXdpAdjustTail
  90. FnSkbGetXfrmState
  91. FnGetStack
  92. FnSkbLoadBytesRelative
  93. FnFibLookup
  94. FnSockHashUpdate
  95. FnMsgRedirectHash
  96. FnSkRedirectHash
  97. FnLwtPushEncap
  98. FnLwtSeg6StoreBytes
  99. FnLwtSeg6AdjustSrh
  100. FnLwtSeg6Action
  101. FnRcRepeat
  102. FnRcKeydown
  103. FnSkbCgroupId
  104. FnGetCurrentCgroupId
  105. FnGetLocalStorage
  106. FnSkSelectReuseport
  107. FnSkbAncestorCgroupId
  108. FnSkLookupTcp
  109. FnSkLookupUdp
  110. FnSkRelease
  111. FnMapPushElem
  112. FnMapPopElem
  113. FnMapPeekElem
  114. FnMsgPushData
  115. FnMsgPopData
  116. FnRcPointerRel
  117. FnSpinLock
  118. FnSpinUnlock
  119. FnSkFullsock
  120. FnTcpSock
  121. FnSkbEcnSetCe
  122. FnGetListenerSock
  123. FnSkcLookupTcp
  124. FnTcpCheckSyncookie
  125. FnSysctlGetName
  126. FnSysctlGetCurrentValue
  127. FnSysctlGetNewValue
  128. FnSysctlSetNewValue
  129. FnStrtol
  130. FnStrtoul
  131. FnSkStorageGet
  132. FnSkStorageDelete
  133. FnSendSignal
  134. FnTcpGenSyncookie
  135. FnSkbOutput
  136. FnProbeReadUser
  137. FnProbeReadKernel
  138. FnProbeReadUserStr
  139. FnProbeReadKernelStr
  140. FnTcpSendAck
  141. FnSendSignalThread
  142. FnJiffies64
  143. FnReadBranchRecords
  144. FnGetNsCurrentPidTgid
  145. FnXdpOutput
  146. FnGetNetnsCookie
  147. FnGetCurrentAncestorCgroupId
  148. FnSkAssign
  149. FnKtimeGetBootNs
  150. FnSeqPrintf
  151. FnSeqWrite
  152. FnSkCgroupId
  153. FnSkAncestorCgroupId
  154. FnRingbufOutput
  155. FnRingbufReserve
  156. FnRingbufSubmit
  157. FnRingbufDiscard
  158. FnRingbufQuery
  159. FnCsumLevel
  160. FnSkcToTcp6Sock
  161. FnSkcToTcpSock
  162. FnSkcToTcpTimewaitSock
  163. FnSkcToTcpRequestSock
  164. FnSkcToUdp6Sock
  165. FnGetTaskStack
  166. FnLoadHdrOpt
  167. FnStoreHdrOpt
  168. FnReserveHdrOpt
  169. FnInodeStorageGet
  170. FnInodeStorageDelete
  171. FnDPath
  172. FnCopyFromUser
  173. FnSnprintfBtf
  174. FnSeqPrintfBtf
  175. FnSkbCgroupClassid
  176. FnRedirectNeigh
  177. FnPerCpuPtr
  178. FnThisCpuPtr
  179. FnRedirectPeer
  180. FnTaskStorageGet
  181. FnTaskStorageDelete
  182. FnGetCurrentTaskBtf
  183. FnBprmOptsSet
  184. FnKtimeGetCoarseNs
  185. FnImaInodeHash
  186. FnSockFromFile
  187. FnCheckMtu
  188. FnForEachMapElem
  189. FnSnprintf
  190. FnSysBpf
  191. FnBtfFindByNameKind
  192. FnSysClose
  193. FnTimerInit
  194. FnTimerSetCallback
  195. FnTimerStart
  196. FnTimerCancel
  197. FnGetFuncIp
  198. FnGetAttachCookie
  199. FnTaskPtRegs
  200. FnGetBranchSnapshot
  201. FnTraceVprintk
  202. FnSkcToUnixSock
  203. FnKallsymsLookupName
  204. FnFindVma
  205. FnLoop
  206. FnStrncmp
  207. FnGetFuncArg
  208. FnGetFuncRet
  209. FnGetFuncArgCnt
  210. FnGetRetval
  211. FnSetRetval
  212. FnXdpGetBuffLen
  213. FnXdpLoadBytes
  214. FnXdpStoreBytes
  215. FnCopyFromUserTask
  216. FnSkbSetTstamp
  217. FnImaFileHash
  218. FnKptrXchg
  219. FnMapLookupPercpuElem
  220. FnSkcToMptcpSock
  221. FnDynptrFromMem
  222. FnRingbufReserveDynptr
  223. FnRingbufSubmitDynptr
  224. FnRingbufDiscardDynptr
  225. FnDynptrRead
  226. FnDynptrWrite
  227. FnDynptrData
  228. maxBuiltinFunc
  229. )
  230. // Call emits a function call.
  231. func (fn BuiltinFunc) Call() Instruction {
  232. return Instruction{
  233. OpCode: OpCode(JumpClass).SetJumpOp(Call),
  234. Constant: int64(fn),
  235. }
  236. }