lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 25 Mar 2009 22:27:59 +0100
From:	Christian Thaeter <ct@...apo.org>
To:	linux-kernel@...r.kernel.org
CC:	Pavel Machek <pavel@....cz>, eric.piel@...mplin-utc.net
Subject: [PATCH] hpfall.c improvements, thoughts

Some conversation I had with Pavel,

imo the example code should be at least barely useable as in not causing
harm like I sketched in (1.). Maybe someone else picks that up and
improves it later on. Patch at the end, quite sketchy and imature as it
doesn't check for errors, but certainly better than before.


	Christian


Pavel Machek wrote:
> Hi!
> 
>> I just hacked and installed the hpfall utility a little bit. By that I
>> thought I should share some ideas with you. (made no patch since this is
>> trivial, but important)
>>
>> 1. hpfall *MUST* mlockall(MCL_CURRENT|MCL_FUTURE); itself!
>> Since the Program sits and waits most of the time it becomes very likely
>> swapped out. If it gets woken up when the laptop drops from the table
>> while it is swapped out it actually triggers harddrive activity!
>>
>> 2. daemon(0, 0);  ... Quick and dirty way to daemonize it
>>
>> 3. Realtime priority:
>>  param.sched_priority = sched_get_priority_max(SCHED_FIFO);
>>  sched_setscheduler(0, SCHED_FIFO, &param);
>> Should give a chance that it has less latency when woken up.
> 
> Good ideas. I ommited them, thinking that someone else will do it. Can
> you submit a patch? (akpm, cc: lk, Eric Piel) I no longer have the
> hardware, and would prefer not to patch code I can't test.
> 
>> .. another thing is that I still use the old IDE driver, I just changed
>> sda to hda, maybe a bandaid is to use argv[1] for defining the drive
>> (well I understand that it is very basic example code, so maybe someday
>> someone adds a better option parser)
> 
> Option parser would indeed be nice.
> 								Pavel
>


Signed-off-by: Christian Thaeter <ct@...apo.org>
---

diff --git a/Documentation/hwmon/hpfall.c b/Documentation/hwmon/hpfall.c
index bbea1cc..f3cde67 100644
--- a/Documentation/hwmon/hpfall.c
+++ b/Documentation/hwmon/hpfall.c
@@ -16,6 +16,8 @@
 #include <stdint.h>
 #include <errno.h>
 #include <signal.h>
+#include <sys/mman.h>
+#include <sched.h>

 void write_int(char *path, int i)
 {
@@ -63,6 +65,7 @@ void ignore_me(void)
 int main(int argc, char* argv[])
 {
        int fd, ret;
+       struct sched_param param;

        fd = open("/dev/freefall", O_RDONLY);
        if (fd < 0) {
@@ -70,7 +73,12 @@ int main(int argc, char* argv[])
                return EXIT_FAILURE;
        }

-	signal(SIGALRM, ignore_me);
+       daemon(0,0);
+       param.sched_priority = sched_get_priority_max(SCHED_FIFO);
+       sched_setscheduler(0, SCHED_FIFO, &param);
+       mlockall(MCL_CURRENT|MCL_FUTURE);
+
+       signal(SIGALRM, ignore_me);

        for (;;) {
 	       unsigned char count;

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ