diff --git a/util/intelp2m/.gitignore b/util/intelp2m/.gitignore index c973792029..e4ad107438 100644 --- a/util/intelp2m/.gitignore +++ b/util/intelp2m/.gitignore @@ -1,2 +1,2 @@ intelp2m -generate/gpio.h +gpio.h diff --git a/util/intelp2m/cli/options.go b/util/intelp2m/cli/options.go index c6adbcffd8..6001039966 100644 --- a/util/intelp2m/cli/options.go +++ b/util/intelp2m/cli/options.go @@ -87,6 +87,7 @@ basic functions: -v | -version Print version -file Set path to the inteltool file. by default -out Set path to the generated file. by default + -logs Override the log file path. by default -p | -platform Set the PCH platform type. by default (enter ? to show datails) @@ -193,6 +194,8 @@ func ParseOptions() { flag.Usage = Usage flag.StringVar(&p2m.Config.InputPath, "file", "inteltool.log", "") flag.StringVar(&p2m.Config.OutputPath, "out", "generate/gpio.h", "") + flag.StringVar(&p2m.Config.LogsPath, "logs", "logs.txt", "") + help := flag.Bool("help", false, "") vers, v := flag.Bool("version", false, ""), flag.Bool("v", false, "") diff --git a/util/intelp2m/config/p2m/config.go b/util/intelp2m/config/p2m/config.go index 07efb5b7bb..6fe9a00f3f 100644 --- a/util/intelp2m/config/p2m/config.go +++ b/util/intelp2m/config/p2m/config.go @@ -52,6 +52,7 @@ type Settings struct { Field FieldType InputPath string OutputPath string + LogsPath string InputFile *os.File OutputFile *os.File IgnoredFields bool diff --git a/util/intelp2m/logs/logs.go b/util/intelp2m/logs/logs.go new file mode 100644 index 0000000000..579ac818de --- /dev/null +++ b/util/intelp2m/logs/logs.go @@ -0,0 +1,50 @@ +package logs + +import ( + "fmt" + "log" + "os" + + "review.coreboot.org/coreboot.git/util/intelp2m/config/p2m" +) + +var ( + linfo *log.Logger + lwarning *log.Logger + lerror *log.Logger +) + +func Init() (*os.File, error) { + + flags := os.O_RDWR | os.O_CREATE | os.O_APPEND + file, err := os.OpenFile(p2m.Config.LogsPath, flags, 0666) + if err != nil { + fmt.Printf("logs: error opening %s file: %v", p2m.Config.LogsPath, err) + return nil, err + } + + attributes := log.Lshortfile + linfo = log.New(file, "INFO: ", attributes) + lwarning = log.New(file, "WARNING: ", attributes) + lerror = log.New(file, "ERROR: ", attributes) + return file, nil +} + +func Infof(format string, v ...any) { + if linfo != nil { + linfo.Output(2, fmt.Sprintf(format, v...)) + } +} + +func Warnf(format string, v ...any) { + if lwarning != nil { + lwarning.Output(2, fmt.Sprintf(format, v...)) + } +} + +func Errorf(format string, v ...any) { + if lerror != nil { + lerror.Output(2, fmt.Sprintf(format, v...)) + } + log.Output(2, fmt.Sprintf(format, v...)) +} diff --git a/util/intelp2m/main.go b/util/intelp2m/main.go index 47a1516c98..a4b4b22941 100644 --- a/util/intelp2m/main.go +++ b/util/intelp2m/main.go @@ -7,6 +7,7 @@ import ( "review.coreboot.org/coreboot.git/util/intelp2m/cli" "review.coreboot.org/coreboot.git/util/intelp2m/config/p2m" + "review.coreboot.org/coreboot.git/util/intelp2m/logs" "review.coreboot.org/coreboot.git/util/intelp2m/parser" ) @@ -33,6 +34,13 @@ func main() { cli.ParseOptions() + if file, err := logs.Init(); err != nil { + fmt.Printf("logs init error: %v\n", err) + os.Exit(1) + } else { + defer file.Close() + } + if file, err := os.Open(p2m.Config.InputPath); err != nil { fmt.Printf("input file error: %v\n", err) os.Exit(1) @@ -53,6 +61,8 @@ func main() { defer file.Close() } + logs.Infof("start %s", os.Args[0]) + prs := parser.ParserData{} prs.Parse() @@ -80,5 +90,6 @@ static const struct pad_config gpio_table[] = {`, Version) #endif /* CFG_GPIO_H */ `) + logs.Infof("exit from %s\n", os.Args[0]) os.Exit(0) } diff --git a/util/intelp2m/version.txt b/util/intelp2m/version.txt index 7e32cd5698..c068b2447c 100644 --- a/util/intelp2m/version.txt +++ b/util/intelp2m/version.txt @@ -1 +1 @@ -1.3 +1.4