1 // 2 // Copyright (c) 2010-2024 Antmicro 3 // 4 // This file is licensed under the MIT License. 5 // Full license text is available in 'licenses/MIT.txt'. 6 // 7 using Antmicro.Renode.Utilities.GDB; 8 9 namespace Antmicro.Renode.Extensions.Utilities.GDB.Commands 10 { 11 public class ThreadContextCommand : Command, IMultithreadCommand 12 { ThreadContextCommand(CommandsManager manager)13 public ThreadContextCommand(CommandsManager manager) : base(manager) 14 { 15 } 16 17 [Execute("Hg")] Execute( [Argument(Encoding = ArgumentAttribute.ArgumentEncoding.ThreadId)]PacketThreadId threadId)18 public PacketData Execute( 19 [Argument(Encoding = ArgumentAttribute.ArgumentEncoding.ThreadId)]PacketThreadId threadId) 20 { 21 var cpuId = threadId.ProcessId ?? threadId.ThreadId; 22 if(cpuId == PacketThreadId.All) 23 { 24 // Choosing all isn't currently supported. 25 return PacketData.ErrorReply(Error.OperationNotPermitted); 26 } 27 28 manager.SelectCpuForDebugging(manager.ManagedCpus[cpuId]); 29 return PacketData.Success; 30 } 31 } 32 } 33