123456789101112131415161718192021222324252627282930313233343536373839404142434445(**************************************************************************)(* *)(* SPDX-License-Identifier LGPL-2.1 *)(* Copyright (C) *)(* CEA (Commissariat à l'énergie atomique et aux énergies alternatives) *)(* *)(**************************************************************************)includeEva__Resultsletis_calledkf=matchCallstack_requests.compatible_filter()with|None->is_calledkf|Somefilter->List.existsfilter(at_start_ofkf|>callstacks)letcallsiteskf=letcallsites=callsiteskfinmatchUpdate.CurrentCallstacks.get()with|[]->callsites|callstacks->letmoduleStmtSet=Cil_datatype.Stmt.Setinletaddacc(kf',stmt)=ifKernel_function.equalkfkf'thenStmtSet.addstmtaccelseaccinletadd'acccs=List.fold_leftaddacccs.Callstack.stackinletstmts=List.fold_leftadd'StmtSet.emptycallstacksinletis_compatiblestmt=StmtSet.memstmtstmtsinletfilter(kf,stmt_list)=matchList.filteris_compatiblestmt_listwith|[]->None|stmt_list->Some(kf,stmt_list)inList.filter_mapfiltercallsitesletupdaterequest=matchCallstack_requests.compatible_filter()with|None->request|Somefilter->filter_callstackfilterrequestletat_start_ofkf=at_start_ofkf|>updateletat_end_ofkf=at_end_ofkf|>updateletbeforestmt=beforestmt|>updateletafterstmt=afterstmt|>updateletbefore_kinstrkinstr=before_kinstrkinstr|>update